Project Overview
YEK Agency needed more than a static brochure site: a portfolio that the team could update daily — new projects, new team members, new homepage media — without a developer in the loop. The goal was a fast, animated public site paired with a private content system. The delivered product is a monorepo with three parts: a Next.js 15 frontend serving six public pages plus an admin dashboard, a Go API exposing REST endpoints for projects, team, media, settings, and auth, and a PostgreSQL database behind it. The public site reads everything fresh from the API on each request, and degrades gracefully to placeholder assets if the backend is ever unreachable.
Features & Functionality
Visitors get a homepage with a hero video slot, a four-image scroll gallery, featured project cards, a seven-item services accordion, and a team section — every one of them fed from the database. The projects grid lists all published work, and each project has its own page built from repeatable blog-style sections (heading, paragraphs, image) stored as JSONB. Admins sign in at /admin and work across four tabs: Home (hero video plus four gallery image URLs), Projects (full CRUD with auto-generated slugs and a per-project "show on homepage" toggle), Media, and Team. Sections with no content — an empty team, zero projects — are omitted from the public site entirely rather than rendered blank.
Development & Technology
The frontend is Next.js 15 (App Router) with React 19 and TypeScript, using GSAP and Lenis for the motion system: an intro curtain loader, an IntersectionObserver-based reveal engine, scroll-driven animations, a custom cursor, and route transitions. The backend is Go with Fiber, structured as clean architecture — domain, service, repository, and transport layers — with sqlc generating type-safe query code from raw SQL. Auth is JWT (HS256, 7-day tokens) with bcrypt-hashed passwords; the admin account is seeded from environment variables on boot. SQL migrations are embedded into the binary with go:embed and applied automatically at startup, so the API container is fully self-contained.
Performance, SEO & Deployment
Every public page is a React Server Component fetching data per request with caching disabled, so published changes appear immediately without a rebuild. Next.js builds in standalone output mode into a multi-stage Docker image that runs as a non-root user; the Go API compiles to a single static binary. Each page declares its own metadata — titles, descriptions, Open Graph tags — and the admin panel is marked noindex. Deployment is three Coolify resources on one VPS: PostgreSQL, the API at api.yekagency.com, and the frontend at yekagency.com, each building from its own Dockerfile in the same repo, with Let's Encrypt SSL and auto-deploy on push.






