My personal portfolio website and blog. Contains a Next.js frontend and a Go backend with MongoDB.
- Custom Design: Boids canvas simulation background, Tailwind styling, and Framer Motion animations.
- Admin Panel: Backend interface to write/edit markdown articles, trigger database backups, and manage website settings.
- Articles & Projects: Markdown-supported articles with math rendering (KaTeX) and syntax highlighting.
- Internationalization (i18n): English and French translation routing (
next-intl), with an Ollama backend integration to auto-translate content between locales. - Contact & Notifications: Contact form integrated with Gotify for instant push notifications to my devices.
- Frontend: Next.js 15, TypeScript, TailwindCSS, Framer Motion, Zustand
- Backend: Go 1.25, Gin, MongoDB, JWT auth, Resty
- Infrastructure: Docker, Docker Compose, Nginx
You can run the environment using Docker Compose:
# Start MongoDB, Frontend, and Backend
echo "NEXT_PUBLIC_API_URL=http://localhost:8000" > frontend/.env
docker compose -f docker/docker-compose.yml up -dOr you can run the components manually:
Frontend:
cd frontend
pnpm install
echo "NEXT_PUBLIC_API_URL=http://localhost:8000" > .env
pnpm run devAccessible at http://localhost:3000.
Backend:
cd backend
go mod tidy
go run src/cmd/main.goAccessible at http://localhost:8000.
Make sure to have a MongoDB instance running and .env configured with the right credentials.
The system is fully containerized. A build.sh script is provided to simplify image building:
# Build the production docker images
./build.sh
# Run via production compose file
docker compose -f docker/docker-compose.prod.yml up -dThis starts the Next.js frontend, Go API, MongoDB, and an Nginx reverse proxy.