The official website for the Groupe de Recherches Historiques de Busnes (GRHB), built with Nuxt 4, Prisma, and Tailwind CSS.
- Framework: Nuxt 4
- Runtime: Bun
- Database: PostgreSQL with Prisma
- Styling: Tailwind CSS
- Rich Text Editor: Tiptap (Markdown support)
- Authentication: Nuxt Auth Utils
- Content: Nuxt Content v3
- Infrastructure: Docker & Traefik (Reverse Proxy + Auto SSL)
- Testing: Vitest & Playwright
- Bun installed on your machine.
- A PostgreSQL instance (or use the provided Docker setup).
-
Clone the repository:
git clone <repository-url> cd grhb
-
Install dependencies:
bun install
-
Configure environment variables: Copy
.env.exampleto.envand fill in the values:cp .env.example .env
Important for deployment:
DOMAIN_NAME: Your website domain (e.g.,grhb-busnes.fr)TRAEFIK_ACME_EMAIL: Email for Let's Encrypt SSL certificates.POSTGRES_USER,POSTGRES_PASSWORD,POSTGRES_DB: Credentials for the internal database.
-
Initialize the database (local development):
bun x prisma migrate dev
Start the development server:
bun run devThe application will be available at http://localhost:3000.
Access the admin interface at /admin (requires login via OVHcloud IAM).
- Linting:
bun run lint(ESLint + Typecheck) - Fix linting:
bun run lint:fix - Image Cleanup:
bun run cleanup(removes unused images in/public/uploads) - Prisma Studio:
bun x prisma studio(GUI to explore the database)
The project is designed to be self-hosted using Docker Compose and Traefik for automatic HTTPS management.
- Ensure your
.envfile is correctly filled with production values. - Launch the stack:
docker compose pull docker compose up -d
To update the application to the latest version, simply run:
docker compose pull app
docker compose up -d appThis will start:
- Nuxt App: The website (built with Bun, running with automatic Prisma migrations).
- PostgreSQL: Database with persistent storage.
- Traefik: Reverse proxy with automated Let's Encrypt SSL and dashboard.
The dashboard is available at https://dashboard.<DOMAIN_NAME>.
The following data is persisted via Docker volumes:
db_data: All database records.uploads: All images uploaded via the admin interface (mapped to/app/public/uploads).traefik_certs: SSL certificates.
bun run testbun run test:e2eThis project is private. All rights reserved.