No description
  • TypeScript 98.8%
  • Dockerfile 0.9%
  • CSS 0.2%
Find a file
2026-05-10 11:23:16 +03:00
.claude fix 2026-05-10 11:23:16 +03:00
app Initial commit: Next.js 15 freelancer MVP with Docker setup 2026-05-10 11:20:12 +03:00
components Initial commit: Next.js 15 freelancer MVP with Docker setup 2026-05-10 11:20:12 +03:00
data Initial commit: Next.js 15 freelancer MVP with Docker setup 2026-05-10 11:20:12 +03:00
lib Initial commit: Next.js 15 freelancer MVP with Docker setup 2026-05-10 11:20:12 +03:00
prisma Initial commit: Next.js 15 freelancer MVP with Docker setup 2026-05-10 11:20:12 +03:00
.env.example Initial commit: Next.js 15 freelancer MVP with Docker setup 2026-05-10 11:20:12 +03:00
.eslintrc.json Initial commit: Next.js 15 freelancer MVP with Docker setup 2026-05-10 11:20:12 +03:00
.gitignore fix 2026-05-10 11:23:16 +03:00
docker-compose.yml Initial commit: Next.js 15 freelancer MVP with Docker setup 2026-05-10 11:20:12 +03:00
docker-entrypoint.sh Initial commit: Next.js 15 freelancer MVP with Docker setup 2026-05-10 11:20:12 +03:00
Dockerfile Initial commit: Next.js 15 freelancer MVP with Docker setup 2026-05-10 11:20:12 +03:00
global.d.ts Initial commit: Next.js 15 freelancer MVP with Docker setup 2026-05-10 11:20:12 +03:00
log.txt fix 2026-05-10 11:23:16 +03:00
middleware.ts Initial commit: Next.js 15 freelancer MVP with Docker setup 2026-05-10 11:20:12 +03:00
next-env.d.ts Initial commit: Next.js 15 freelancer MVP with Docker setup 2026-05-10 11:20:12 +03:00
next.config.ts Initial commit: Next.js 15 freelancer MVP with Docker setup 2026-05-10 11:20:12 +03:00
package-lock.json Initial commit: Next.js 15 freelancer MVP with Docker setup 2026-05-10 11:20:12 +03:00
package.json Initial commit: Next.js 15 freelancer MVP with Docker setup 2026-05-10 11:20:12 +03:00
postcss.config.js Initial commit: Next.js 15 freelancer MVP with Docker setup 2026-05-10 11:20:12 +03:00
README.md Initial commit: Next.js 15 freelancer MVP with Docker setup 2026-05-10 11:20:12 +03:00
tailwind.config.ts Initial commit: Next.js 15 freelancer MVP with Docker setup 2026-05-10 11:20:12 +03:00
tsconfig.json Initial commit: Next.js 15 freelancer MVP with Docker setup 2026-05-10 11:20:12 +03:00

Personal IT Freelancer MVP

Custom MVP website for a single IT freelancer. Built with Next.js App Router, TypeScript, Tailwind CSS, PostgreSQL, Prisma, Zod, and simple custom admin authentication.

Features

  • Public service website with home, services, pricing, about, contacts, request, and policy pages
  • Request form with Zod validation, honeypot spam protection, and basic in-memory rate limiting
  • PostgreSQL persistence via Prisma
  • Protected admin area with login, dashboard, order list, filters, search, and order updates
  • Static service catalog aligned with a future database-backed Service model
  • Basic SEO metadata, robots.txt, and sitemap support

Project Structure

  • app/ Next.js App Router pages, layouts, metadata routes, and API routes
  • components/ Shared UI, public sections, forms, and admin components
  • data/services.ts Static service source for MVP
  • lib/ Database, auth, session, validation, rate limiting, and utilities
  • prisma/ Prisma schema and seed script

Setup

  1. Install dependencies:
npm install
  1. Copy the environment template:
cp .env.example .env
  1. Start PostgreSQL:
docker compose up -d
  1. Generate Prisma client and run migrations:
npm run prisma:generate
npm run prisma:migrate -- --name init
  1. Seed services and the initial admin user:
npm run seed
  1. Start the app:
npm run dev

Main Commands

npm run dev
npm run build
npm run lint
npm run prisma:generate
npm run prisma:migrate
npm run prisma:deploy
npm run seed

Default Admin Credentials

Controlled through .env:

  • ADMIN_EMAIL
  • ADMIN_PASSWORD
  • ADMIN_NAME

MVP Limitations

  • Services are rendered from a static file on the public site, even though the Prisma Service model and seed data are already present.
  • Rate limiting is in-memory, so it resets on server restart and is not shared across instances.
  • No client registration, online payments, marketplace features, or notification pipelines are included.
  • Middleware checks for cookie presence; full session verification happens in server-side admin code and auth routes.
  1. Move public service reads from static data to Prisma once service management is needed in admin.
  2. Replace in-memory rate limiting with Redis or database-backed throttling.
  3. Add email or Telegram notifications for new requests.
  4. Add audit logging and password reset flow for admin authentication.