cq

Distributed social media platform
git clone git://git.finwo.net/app/cq
Log | Files | Refs

commit c151887833d1b0e1d442dd0ce9e9648476585b5f
parent 49c975f30ca743f957e0f5ff9728bdb2e26c2e3f
Author: finwo <finwo@pm.me>
Date:   Sat, 13 Sep 2025 16:32:37 +0200

Hello world init

Diffstat:
Apackages/app/.gitignore | 1+
Mpackages/app/esbuild.js | 88++++++++++++++++++++++++++-----------------------------------------------------
Mpackages/app/package.json | 9++++++++-
Dpackages/app/src/AppModule/index.ts | 0
Apackages/app/src/component/app.tsx | 9+++++++++
Apackages/app/src/global.css | 5+++++
Mpackages/app/src/main.ts | 2++
7 files changed, 54 insertions(+), 60 deletions(-)

diff --git a/packages/app/.gitignore b/packages/app/.gitignore @@ -0,0 +1 @@ +/dist/ diff --git a/packages/app/esbuild.js b/packages/app/esbuild.js @@ -38,66 +38,36 @@ const config = { }; const buildList = []; -const styles = ['AppModule/global.css']; - -// esbuild -// .build(config) -// .then(async () => { +const styles = ['global.css']; +esbuild + .build(config) + .then(async () => { // try { fs.mkdirSync('./dist/assets'); } catch { /* empty */ } // const r = await cpy(__dirname + '/src/assets/*', __dirname + '/dist/assets'); - // try { fs.mkdirSync('./dist/AppModule'); } catch { /* empty */ } -// fs.copyFileSync(`./src/AppModule/global.css`, `./dist/AppModule/global.css`); - -// for(const name of Object.keys(entryPoints)) { -// buildList.push(`${name}.js`); -// try { -// fs.statSync(config.outdir + `/${name}.css`); -// styles.push(`${name}.css`); -// } catch(e) { -// // Intentionally empty -// } -// } - -// const floaticonSize = 'min(25vw,25vh)'; -// fs.writeFileSync(config.outdir + `/index.html`, `<!DOCTYPE html> -// <html> -// <head> -// <meta charset="utf-8"> -// <meta name="viewport" content="width=device-width,initial-scale=1"> - -// ${styles.map(name => `<link rel="preload" as="style" href="${name}" onload="this.onload=null;this.rel='stylesheet'"/>`).join('\n ')} -// </head> -// <body> - -// <!-- Should be overwritten by mounting app on body --> -// <div id="floaticon"> -// <style> -// #floaticon { -// background: #FFF; -// position: fixed; -// width: 100vw; -// height: 100vh; -// padding-top: calc(50vh - (${floaticonSize} / 2)); -// text-align: center; -// top: 0; -// transition: opacity 300ms; -// opacity: 1; -// } -// #floaticon > img { -// max-height: ${floaticonSize}; -// } -// #floaticon.fade { -// opacity: 0; -// } -// </style> -// <img src="assets/logo.png"> -// </div> - -// ${buildList.map(name => `<script type="module" src="${name}" defer></script>`).join('\n ')} -// </body> -// </html> -// `); - -// }) + fs.copyFileSync(`./src/global.css`, `./dist/global.css`); + for(const name of Object.keys(entryPoints)) { + buildList.push(`${name}.js`); + try { + fs.statSync(config.outdir + `/${name}.css`); + styles.push(`${name}.css`); + } catch(e) { + // Intentionally empty + } + } + + fs.writeFileSync(config.outdir + `/index.html`, `<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width,initial-scale=1"> + ${styles.map(name => `<link rel="preload" as="style" href="${name}" onload="this.onload=null;this.rel='stylesheet'"/>`).join('\n ')} + </head> + <body> + ${buildList.map(name => `<script type="module" src="${name}" defer></script>`).join('\n ')} + </body> +</html> +`); + + }) diff --git a/packages/app/package.json b/packages/app/package.json @@ -3,7 +3,11 @@ "version": "0.0.1", "main": "dist/main.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "echo \"Error: no test specified\" && exit 1", + "watch": "npx -y nodemon -w src -e css,ts,tsx --exec npm -- run build", + "serve": "npx -y serve dist", + "dev": "npx -y concurrently 'npm run watch' 'npm run serve'", + "build": "node esbuild.js" }, "keywords": [], "author": "", @@ -12,5 +16,8 @@ "devDependencies": { "cpy": "^12.0.1", "esbuild": "^0.25.9" + }, + "dependencies": { + "mithril": "^2.3.7" } } diff --git a/packages/app/src/AppModule/index.ts b/packages/app/src/AppModule/index.ts diff --git a/packages/app/src/component/app.tsx b/packages/app/src/component/app.tsx @@ -0,0 +1,9 @@ +export default { + view: function() { + return ( + <div> + Hello World! + </div> + ); + }, +}; diff --git a/packages/app/src/global.css b/packages/app/src/global.css @@ -0,0 +1,5 @@ +:root { + background: #000000; + color: #FFFFFF; + font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; +} diff --git a/packages/app/src/main.ts b/packages/app/src/main.ts @@ -0,0 +1,2 @@ +globalThis.m = require('mithril'); +m.mount(document.body, require('./component/app.tsx').default);