Jovie Joy coloring book

I made this website for my wife to sell digital products online with Stripe

Jovie Joy coloring book

About the project

jovie-joy-colouring-book

Printable colouring books for tiny hands. Monorepo with Next.js frontend + ASP.NET Core backend + Postgres.

Stack

LayerTech
FrontendNext.js 15 (App Router), TypeScript
BackendASP.NET Core 9, Entity Framework Core
DatabasePostgreSQL 17
AuthGoogle OIDC (id_token via JWKS) + admin email/password, JWT sessions
PaymentsStripe Checkout (one-time, digital PDF downloads)
DeployGitHub Actions → self-hosted runner on VM

Repo layout

.
├── apps/
│   ├── web/                Next.js frontend
│   └── api/                ASP.NET Core backend
│       └── uploads/        PDF and image uploads (git-ignored)
├── .github/workflows/      CI + deploy pipelines
├── docker-compose.yml      Local dev
├── docker-compose.prod.yml Production
└── README.md

Local development

Prerequisites

  • Node 20+
  • .NET 9 SDK
  • Docker (for Postgres)

First-time setup

# 1. Start Postgres
docker compose up -d db

# 2. Backend
cd apps/api
cp .env.example .env               # fill in Google + Stripe keys
dotnet restore
dotnet ef database update          # apply migrations (seeds admin user too)
dotnet run                         # http://localhost:8080

# 3. Frontend (new terminal)
cd apps/web
npm install
NEXT_PUBLIC_API_URL=http://localhost:8080 npm run dev   # http://localhost:3000

Admin dashboard

The admin panel lives at /admin. Visit /admin/login to sign in with your admin credentials.

Walkthrough

Home page

Home page