AppCoreJS is a layered framework for Node.js applications.
The rule is strict:
project -> app -> core
core is internal.
app is the mandatory interface.
Project code uses app, never core directly.
Minimal full command (all layers):
npx app-core --back --server --front --model --project myProject --dbuser appcore --dbpassword appcore --dbname appcoreGenerated structure (current directory):
./core/
./app/
./myProject/
./myProject/public/
./server.js
./index.js
Run the server:
node server.jsOpen:
http://127.0.0.1:3000
- internal engine
- framework internals
- not intended to be used directly
- framework interface
- mandatory entry point
- place to adapt framework behavior globally
- business code
- business models, queries, server components, frontend components/screens
- uses
apponly
Fundamental rule:
project -> app -> core
Never:
project -> core
app is your control layer.
You can change framework behavior without patching core.
Example: global save rule in app/db/DbObject.js.
import { CoreDbObject } from '../../core/db/CoreDbObject.js';
export class DbObject extends CoreDbObject
{
async save(forceInsert = false)
{
if ('updatedAt' in this)
{
this.updatedAt = new Date();
}
return await super.save(forceInsert);
}
}This check is functional.
It applies only when the model has updatedAt.
./core/
./app/
./myProject/
db/
server/
public/
core/: framework internals.app/: framework interface layer.myProject/: business layer.
- ORM classes are exposed through
app/db/*. - project models are in
./<project>/db/models/.
- server base class is
app/server/Server.js. - project server extends it in
./<project>/server/.
- frontend root is
./<project>/public/. public/core: frontend engine.public/app: frontend interface.public/componentsandpublic/screens: project UI code.public/ext: generated only with--front --ext(or--front --intro).public/intro: generated only with--front --intro.
- generated with
--model. - app model classes generated in
./<project>/db/models/. - core base model classes generated in
./core/db/models/.
Start here:
Direct access:
- 001 - app-core CLI
- 002 - Architecture
- 003 - Backend
- 004 - Model / ORM
- 005 - Server
- 006 - Frontend
- 007 - Examples
Bruno Augier (aka DzzD)

