Elsys is a multilingual (Bulgarian/English) school website built with the Next.js App Router. It combines a localized content strategy (JSON/Markdown) with a lightweight admin surface, Prisma-backed persistence, and modern frontend tooling.
Core features
- Multilingual site routing (
app/[locale]/...) with server-side localized rendering - CMS-style content stored in
content/{bg|en}(JSON + Markdown) - Admin UI for pages, navigation and news under
app/admin - Navigation tree caching with server-side hydration to improve first-load performance
- Auth via NextAuth for admin flows
- Prisma ORM for DB access and migrations
- Tailwind CSS + TypeScript for modern frontend DX
Prerequisites:
- Node 18+ (or compatible LTS)
pnpm(recommended) — v7+ works, v9+ preferred
- Install dependencies
pnpm install- Environment
- Copy the example environment file and update values:
cp .env.example .env- Make sure to set
DATABASE_URL, NextAuth secrets and any other required variables.
- Database (Prisma)
pnpm prisma generate
pnpm prisma migrate dev --name init
pnpm prisma db seed- Run the dev server
pnpm devapp/– Next.js App Router routes, localized layouts underapp/[locale]components/– UI components and admin widgetscontent/– localized content files (bg/,en/)lib/– runtime helpers (Prisma client, content loader, navigation builder)prisma/– schema, migrations and seed scriptsscripts/– content import / maintenance utilities
- Admin UI:
app/admin(requires authentication) - API routes live under
app/api/*, including admin endpoints that update content and invalidate navigation caches
- Install:
pnpm install - Dev:
pnpm dev - Build:
pnpm build - Start (production):
pnpm start - Prisma:
pnpm prisma generate,pnpm prisma migrate dev,pnpm prisma db seed - Lint:
pnpm lint
This project is designed for Vercel (App Router) but can be deployed to any Node host. Ensure environment variables are set and the database is accessible from your deployment target.
- If you see missing Prisma types:
pnpm prisma generate - For local dev, use a local SQLite or Postgres DB and ensure
DATABASE_URLis correct - When changing navigation or admin data, APIs will invalidate server caches — if UI appears stale, restarting dev server or clearing build cache helps during development
- Fork and open a PR. Keep changes focused and add migration/seed updates when altering the schema.
MIT