Quickstart
Scaffold and run your first Crudy app in minutes.
This guide takes you from an empty directory to a running Crudy app with the dev stack. It assumes you already have the CLI installed and Docker available.
1. Scaffold the app
crudy create my-app
cd my-appThe CLI lays out a thin app shell that consumes @crudy/backend and @crudy/frontend. The result looks like this:
my-app/
app.config.json
.env.example
Makefile
docker-compose.yml
docker-compose.dev.yml
backend/
server.ts
package.json
Dockerfile
Dockerfile.dev
tsconfig.json
frontend/
package.json
next.config.ts
proxy.ts
postcss.config.js
tsconfig.json
Dockerfile
Dockerfile.dev
app/
layout.tsx
page.tsx
providers.tsx
globals.css
login/page.tsx
[...slug]/page.tsx
migrations/
seeds/backend/server.ts calls createCrudyServer with an empty modules array. frontend/app/providers.tsx calls CrudyProviders with the same. You will add modules in those two files. The generated Makefile wraps the most common dev-loop commands for your app.
2. Install your license
The framework refuses to start without a valid license. Licenses are issued only by Crudy.
- Request a license at /pricing and tell us the
audiencevalue from yourapp.config.json. - Place the two files we send you at the app root:
license.liclicense-public.pem
The license is verified at boot and enforced at runtime. If license.lic is missing, expired, or its audience does not match app.config.json, the backend refuses to start and a license that expires while the app is running is enforced immediately (no grace period). See Licensing for the full behavior.
3. Configure secrets
Copy the example env file and set real values:
cp .env.example .envAt minimum, JWT_SECRET must be at least 32 characters with sufficient entropy. The backend boot check rejects known defaults (changeme, password, and so on). Pick a long random string.
4. Start the dev stack
The dev compose file builds with hot reload and bind-mounts your source:
make dev-upOnce the containers are healthy:
- API: http://localhost:3000
- Frontend: http://localhost:3001
You can confirm everything came up with:
make health5. Set the global admin password
The first start creates an admin user (admin@localhost by default) with a random unusable password. Set a real one so you can log in:
crudy admin resetThe command prints the new password once. Use it to log in at http://localhost:3001/login.
6. Reset the database any time
Crudy is a work-in-progress framework: the recommended workflow in dev is to wipe and reapply rather than layering migrations.
make dev-reset
make dev-upThis drops the volumes, restarts the stack, and lets the backend re-run all core and app migrations from scratch on boot.
Next steps
- Explore Architecture: Overview to understand what each piece does.
- Read Modules: Anatomy before you write your first module.