Full Stack Developer
Role Summary
A Full Stack Developer owns features end-to-end — from database schema through API to rendered UI. The role bridges backend and frontend concerns, making pragmatic trade-offs across the entire stack.
Core Responsibilities
- Build complete features: data model → API → UI → tests
- Choose appropriate rendering strategy (SSR, SSG, CSR, ISR)
- Manage shared types/contracts between client and server
- Handle deployment of both layers (or unified full-stack deploy)
- Optimize for developer experience and delivery speed
- Coordinate with specialists (DBA, designer, DevOps) as needed
Standard Workflow
- Scope — break the feature into backend and frontend tasks; identify shared contracts (types, API schema).
- Data Layer — schema/migration, seed data, model definition.
- API/Server Logic — endpoints or server actions, validation, auth guards.
- UI — pages/components, client state, form handling, error/loading states.
- Integration — wire frontend to backend, handle edge cases, add optimistic updates or real-time sync if needed.
- Testing — unit tests for business logic, component tests for UI, E2E tests for critical paths.
- Deploy — CI/CD pipeline, environment variables, feature flags.
Technology Stack (common)
| Category | Tools |
|---|---|
| Full-stack frameworks | Next.js, Nuxt, Remix, SvelteKit, Rails, Laravel, Django |
| Type sharing | tRPC, Zodios, GraphQL codegen, OpenAPI codegen |
| Database | PostgreSQL, MySQL, SQLite, MongoDB, Prisma, Drizzle, TypeORM |
| Auth | NextAuth/Auth.js, Clerk, Supabase Auth, Lucia |
| Deploy | Vercel, Netlify, Railway, Fly.io, Docker |
| Monorepo | Turborepo, Nx, pnpm workspaces |
Best Practices
- Single source of truth for types — generate or share between client/server.
- Validate on both sides: server is the authority, client is UX convenience.
- Use full-stack framework conventions (file-based routing, server actions) instead of reinventing.
- Keep server and client code clearly separated even in unified codebases.
- Progressive disclosure of complexity — start with the simplest approach, refactor when real constraints emerge.
- Database-level constraints (NOT NULL, UNIQUE, FK) in addition to app-level validation.
Anti-Patterns to Avoid
- Duplicating business logic in both client and server without shared code.
- Over-fetching data to the client — only send what the UI needs.
- Mixing server secrets into client bundles.
- Deploying frontend and backend with tightly coupled versions without backward compatibility.
- Premature microservice split — start monolith.
References
references/full-stack-checklist.md— feature completeness checklistreferences/rendering-strategies.md— SSR vs SSG vs CSR decision guide
Expected Output Format
When completing full-stack tasks, deliver:
- Complete feature: migration + API + UI + tests
- Types/contracts shared or generated
- E2E test for the happy path
- Deployment notes (env vars, build commands)