Files
KIS-TOiR/general-prompt.md
2026-03-15 17:29:37 +03:00

4.6 KiB

ROLE

You are a Staff-level Fullstack Platform Engineer.

Your task is to generate a fully runnable fullstack CRUD application from the DSL context of this repository.

Use context7.

Follow official best practices from:

NestJS documentation

Prisma documentation

React Admin documentation

Docker documentation

The generated application must run without manual fixes.

PROJECT CONTEXT

You must read the project documentation in the following strict order:

domain/dsl-spec.md

examples/*.dsl

backend/architecture.md

backend/prisma-rules.md

backend/prisma-service.md

backend/service-rules.md

backend/runtime-rules.md

backend/database-runtime.md

backend/seed-rules.md

frontend/architecture.md

frontend/react-admin-rules.md

generation/scaffolding-rules.md

generation/backend-generation.md

generation/frontend-generation.md

generation/runtime-bootstrap.md

generation/post-generation-validation.md

Do not ignore any rules defined in these documents.

GOAL

Generate a DSL-driven fullstack CRUD system.

Stack:

Backend

Node.js

NestJS

Prisma ORM

PostgreSQL

Frontend

React

Vite

React Admin

MUI

shadcn/ui

PROJECT STRUCTURE

Root docker-compose.yml server/ client/

Backend server/ src/ modules/{entity}/ prisma/schema.prisma prisma/seed.ts .env .env.example

Frontend client/src/resources/{entity}/ client/src/App.tsx client/src/dataProvider.ts

STEP 1 — Parse DSL

Parse all DSL files and extract:

Entities Attributes Primary keys Foreign keys Enums

Respect the DSL specification.

STEP 2 — CLI scaffolding

Use official CLIs.

Backend npx @nestjs/cli@10.3.2 new server --package-manager npm --skip-git

Frontend npm create vite@5.2.0 client -- --template react-ts

STEP 3 — Install dependencies

Backend

@prisma/client prisma @nestjs/config

Frontend

react-admin ra-data-simple-rest @mui/material @emotion/react @emotion/styled

STEP 4 — Generate Prisma schema

From DSL domain generate:

models

enums

relations

primary keys

Type mapping

decimal → Decimal date → DateTime

DTO mapping

decimal → string date → ISO string

STEP 5 — Generate NestJS modules

Per entity generate:

module controller service dto

Controller routes

GET /resource GET /resource/:pk POST /resource PATCH /resource/:pk DELETE /resource/:pk

Path parameter must match the DSL primary key name.

Examples

/equipment/:id /equipment-types/:code /repair-orders/:id

STEP 6 — Generate Service Layer

Service layer must follow backend/service-rules.md.

Important rule:

React Admin sends the id field in update payloads even when the primary key is not named id.

Therefore update payload must be sanitized before passing data to Prisma.

Services MUST NOT pass raw request DTO directly into Prisma.

Incorrect:

prisma.entity.update({ where, data: dto })

Correct pattern:

const { id, , ...data } = dto

return prisma.entity.update({ where, data })

Example (PK = code)

const { id, code, ...data } = dto

return prisma.equipmentType.update({ where: { code }, data })

Example (PK = id)

const { id: _pk, ...data } = dto

return prisma.entity.update({ where: { id }, data })

Rules

Update payload passed to Prisma must not contain:

id primary key attribute readonly attributes

STEP 7 — Generate PrismaService

Requirements

extends PrismaClient implements OnModuleInit await this.$connect()

Do NOT use

beforeExit

STEP 8 — Generate runtime infrastructure

Create

server/.env server/.env.example

DATABASE_URL example

postgresql://postgres:postgres@localhost:5432/toir

Add to package.json

postinstall: prisma generate

STEP 9 — Database runtime

Generate root

docker-compose.yml

PostgreSQL container

postgres:16 port 5432

STEP 10 — Generate seed

Create

server/prisma/seed.ts

Seed minimal data for

EquipmentType Equipment RepairOrder

Add to package.json

prisma.seed

STEP 11 — Generate React Admin

For each entity generate

Field mapping

string → TextInput number → NumberInput date → DateInput enum → SelectInput FK → ReferenceInput

API responses MUST contain

If PK ≠ id, map primary key to id.

Example

{ id: record.code, code: record.code }

STEP 12 — Validation

Verify

docker-compose.yml exists database container starts prisma migrate dev works prisma db seed works API responds /health React Admin receives id update services sanitize payload before Prisma

OUTPUT

Provide

FULLSTACK GENERATION REPORT

Include

1 Parsed DSL 2 Prisma models 3 Backend modules 4 API endpoints 5 React Admin resources 6 Runtime configuration 7 Validation results

RUN INSTRUCTIONS

The generated application must run successfully with

docker compose up -d

cd server npm install npx prisma migrate dev npm run start

cd client npm install npm run dev