Skip to main content

Monorepo Structure โ€” Frontpics

Frontpics is a pnpm/Turborepo workspace.

Rootโ€‹

frontpics/
apps/
api/ NestJS API
web/ Next.js app
docs/ Docusaurus documentation
packages/
database/ Prisma schema, migrations, generated client
shared/ shared enums, Zod schemas, types, utilities
config/ shared TypeScript config
infrastructure/
scripts/ VPS/bootstrap/deployment scripts
media/ local media/supporting assets

apps/apiโ€‹

NestJS 11 API using Fastify.

Important areas:

apps/api/src/
app.module.ts
main.ts
config/
common/
decorators/
filters/
interceptors/
pipes/
utils/
modules/
admin/
audit/
auth/
database/
email/
feedback/
images/
incoming-emails/
invoices/
licenses/
mailer/
notifications/
orders/
payouts/
photographers/
queue/
redis/
shooting-requests/
storage/
tags/
telemetry/
upload/
users/
wallets/

Rules:

  • BullModule.forRoot() belongs only in AppModule.
  • Feature modules register queues with BullModule.registerQueue().
  • Import IMAGE_PROCESS_QUEUE from queue.constants.ts.
  • API TypeScript uses NodeNext.

apps/webโ€‹

Next.js 16 App Router app.

Important areas:

apps/web/src/
app/
[locale]/
admin/
auth/
buyer/
moderator/
payroll/
photographer/
images/
page.tsx
layout.tsx
globals.css
components/
admin/
common/
images/
photographer/
ui/
hooks/
i18n/
dictionaries/
lib/
proxy.ts

Rules:

  • Route protection and i18n redirects belong in src/proxy.ts.
  • UI translations live in all supported dictionaries: fi.json, en.json, sv.json.
  • Generated docs live in public/docs; edit docs source under apps/docs.

apps/docsโ€‹

Docusaurus 3 source docs.

apps/docs/docs/
staff/
fi/staff/
en/users/
fi/users/

Build output is apps/docs/build.

packages/databaseโ€‹

Owns Prisma schema and generated client.

packages/database/
prisma/
schema.prisma
migrations/
seed.ts
src/
index.ts
generated/prisma/

Always check schema.prisma before using model fields.

packages/sharedโ€‹

Shared enums, schemas, and type helpers used by API and web.

Use this package for contracts that need to be understood by both sides, such as roles, statuses, image schemas, shooting request schemas, and formatting helpers.

packages/configโ€‹

Shared TypeScript base configuration.

Deployment Filesโ€‹

docker-compose.yml
docker-compose.infra.yml
docker-compose.blue.yml
docker-compose.green.yml
infrastructure/scripts/

The blue/green compose files define application stacks. docker-compose.infra.yml defines shared PostgreSQL and Redis services.