A coding assessment built on the production-grade Zero One Group (ZOG) development stack. Pick the track that matches your applied role, build the assigned task using this monorepo, and document your work in
docs/.
This repository is a minimal monorepo scaffold derived from the Zero One Group Monorepo. It ships the standardized ZOG tooling, conventions, and application templates so you can complete your skill test exactly the way a real ZOG project is built.
As an applicant you will:
- Pick the track that matches the role you applied for: Frontend (web), Backend, Infra (DevOps), or Mobile.
- Generate one or more applications from the provided templates.
- Implement the assigned task for your track.
- Document your work under
docs/(see Documentation). - Push your work and share your repository with the hiring team (see Submission).
| Track | Applied Role | Template Domains |
|---|---|---|
| Frontend | Frontend Engineer | Web & SPA frameworks, shared UI components |
| Backend | Backend Engineer | Go, Python, headless CMS |
| Infra (DevOps) | Infrastructure / DevOps Engineer | IaC, CI/CD, observability, databases, proxies |
| Mobile | Mobile Engineer | Cross-platform mobile |
- Orchestration: moon — task runner, project graph, and template generator.
- Node toolchain: Node.js 24, pnpm 11.
- Go toolchain: Go 1.27.
- Python toolchain: Python 3.14 with uv.
- Formatting / Linting: Oxc (
oxfmt,oxlint). - Local services: Docker Compose — PostgreSQL, Mailpit, MinIO, ClickHouse, Redis, and OpenTelemetry instrumentation.
- VCS: Git with conventional commits enforced via moon hooks.
The tools below are required. How to install and configure them is intentionally left for you to discover — figuring out the toolchain is part of the assessment.
- moon — required to run tasks and generate projects.
- Docker + Docker Compose — for local databases and backing services.
- Go 1.27 — for Go templates.
- Node 24 + pnpm 11 — for Node/TypeScript templates.
- uv (Python 3.14) — for Python/FastAPI templates.
Once
moonis running, it provisions the language toolchains (Go, Node, Python/uv) automatically on first use — you mainly need to getmoonitself working. How to installmoonis intentionally left for you to discover.
# 1. Fork this repository, then clone your fork
git clone <your-fork-url>
cd <repository-directory> # the cloned folder name (matches the repo/fork name)
# 2. Install workspace dependencies
pnpm install
# 3. (Optional) Start local backing services — Postgres, Mailpit, instrumentation
pnpm compose:up
# 4. Generate the application(s) for your track
moon generate <template> # use the template that fits your track
# follow the interactive prompts
# 5. Configure the environment
cp apps/<your-app>/.env.example apps/<your-app>/.env
# edit .env as needed
# 6. Run the project
moon run :dev # start all dev servers
moon run <project_id>:dev # or start a single projectRun moon generate <template-name>, where <template-name> is any template from the Available Templates list (or run moon templates to list them). Pick the template that fits your task.
The full list of templates is in Available Templates. Templates are fetched from oss.zero-one-group.com, so the first generation needs network access.
pnpm compose:up # start Postgres, Mailpit, and instrumentation
pnpm compose:down # stop services
pnpm compose:cleanup # remove service data and volumesUncomment additional stacks (minio, clickhouse, redis) in compose.yaml if your task requires them.
.
├── apps/ # Application projects (generated from templates)
├── packages/ # Shared libraries (e.g. shared-ui)
├── infra/ # Infrastructure projects (generated from templates)
├── docker/ # Docker Compose stacks and single-service configs
│ └── _stacks_/ # Compose fragments included by compose.yaml
├── docs/ # YOUR documentation deliverable (see Documentation)
├── scripts/ # Utility scripts (e.g. install_mockery.sh)
├── .moon/ # moon workspace, toolchain, and task configuration
├── compose.yaml # Local development services
├── pnpm-workspace.yaml # pnpm workspace globs and dependency catalog
└── package.json # Root scripts (lint, format, compose, cleanup)
apps/, packages/, and infra/ start empty. Populate them with moon generate.
| Command | Description |
|---|---|
moon run :dev |
Start development servers for all projects |
moon run :build |
Build all projects |
moon run :test |
Run tests across all projects |
moon run :lint |
Lint all projects |
moon run :format |
Format all projects |
moon check --all |
Run all checks (lint, typecheck, test) |
moon generate <tpl> |
Scaffold a new project from a template |
moon <id>:<task> |
Run a specific task for a project |
moon project-graph |
Visualize the project dependency graph |
moon :update-deps |
Update dependencies across projects |
Run moon help, or see https://moonrepo.dev/docs/run-task for details.
| Command | Description |
|---|---|
pnpm install |
Install workspace dependencies |
pnpm lint |
Lint all projects via moon |
pnpm format |
Format the workspace with oxfmt |
pnpm typecheck |
Type-check all projects |
pnpm compose:up |
Start local dev services |
pnpm compose:down |
Stop local dev services |
pnpm compose:cleanup |
Remove local dev service data |
pnpm update-deps |
Update all dependencies |
pnpm cleanup |
Clean dependencies / cache / build artifacts |
Generate with moon generate <name>. You can also list all available templates with moon templates.
Source of truth:
templates.json— 19 templates (last updated 2026-08-25). The list below mirrors that file exactly.
Frontend
astro— Astro websitenextjs— Next.js applicationreact-app— React SPA (TanStack)tanstack-start— TanStack Startshared-ui— Shared UI component library (shadcn/ui)
Backend
go-clean— Go application (Clean Architecture)go-modular— Modular Go structurefastapi-ai— FastAPI application for AI/MLstrapi— Strapi headless CMSphoenix— Elixir Phoenix application
Mobile
expo— Expo (React Native) mobile application
Infrastructure & DevOps
ansible— Ansible playbooks and server hardeninggitlab-cicd— GitLab CI/CD pipeline configurationload-balancer— Nginx load balancer / reverse proxymonitoring— Observability stack (Prometheus, Grafana, etc.)postgresql— PostgreSQL configurationsquidproxy— Squid egress proxyswarm— Docker Swarm configurationterragrunt— Terragrunt / OpenTofu infrastructure as code
Libraries
shared-ui— Shared UI component library (listed under Frontend)
Each track has its own focus. ZOG uses Product Engineer levels (PE1–PE4); the bar rises with level. Your concrete base task and PE-level criteria live in ASSIGNMENT.md; the guidance below is general — choose the template(s) that fit your task.
- Generate a frontend application from one of the available frontend templates.
- Tailwind CSS is the standard styling approach across ZOG frontend templates; use it for UI.
- Write unit tests and end-to-end tests where applicable (
moon <id>:e2e). - Your task: see
ASSIGNMENT.mdfor the Frontend base task and your PE-level criteria. Implement it in the generated app and document UI decisions, state management, and API integration indocs/.
- Generate a backend service from one of the available backend templates.
- Use the local Docker stacks for databases / cache as needed (
pnpm compose:up). - Follow the chosen template's architecture and write tests. Document the API contract, data model, and environment configuration in
docs/. - Your task: see
ASSIGNMENT.mdfor the Backend base task and your PE-level criteria. Implement it in the generated service and document it indocs/.
- Generate infrastructure projects from the available infrastructure templates.
- Keep infrastructure as code reproducible and documented. Describe the target topology, provisioning steps, and how to run/verify it in
docs/. - Your task: see
ASSIGNMENT.mdfor the Infra base task and your PE-level criteria. Implement it in the generated project(s) and document it indocs/.
- Generate the mobile application from the available mobile template.
- Document navigation, state management, native modules, and how to run it on a simulator/device in
docs/. - Your task: see
ASSIGNMENT.mdfor the Mobile base task and your PE-level criteria. Implement it in the generated app and document it indocs/.
You must document your work under docs/. Reviewers read docs/ first to understand your approach, decisions, and how to run your solution.
Create docs/README.md as the entry point and structure it as:
- Overview — what you built and your track/role.
- Setup & Run — exact steps to install, configure (
.env), and run your project(s). - Architecture & Decisions — key design choices, patterns used, and trade-offs.
- Task Breakdown — how each part of the assignment maps to the code, with file references.
- Testing — how to run unit/E2E tests and what is covered.
- Appendix — environment variables, useful commands, references.
The docs/ folder is intentionally left empty — you must author docs/README.md (and any supporting files) yourself, from scratch. Keep it concise but complete; link to code rather than copying it. This is part of the evaluation of your documentation ability.
- Commits: Conventional Commits are enforced by a
commit-msghook (see.moon/workspace.yml). Allowed types:feat,fix,chore,docs,style,refactor,perf,test,build,ci,revert. Format:<type>(<scope>): <description>. - Branching: Create a branch named after your track, e.g.
feat/frontend-<your-name>orfeat/backend-<your-name>. - Formatting & Linting: Run
pnpm formatandpnpm lint(ormoon :format/moon :lint) before committing. Hooks run on pre-commit. - Namespaces: If you fork or rename the project, replace the
myorgnamespace andexample.comreferences consistently across the codebase.
- Read the generated template's own README first — each template ships with best-practice defaults.
- Run
moon check --allbefore submitting; CI runs the same checks. - Keep changes scoped to your track; do not rewrite unrelated scaffolding.
- Document as you go —
docs/is part of the evaluation. - Use
moon project-graphto understand dependencies between projects.
- Push your work to your forked repository.
- Share your repository with the hiring team, or send a repository invitation to the hiring team.
- Ensure
docs/README.mdis complete and the project builds and passes checks.
- ZOG Monorepo (docs): https://oss.zero-one-group.com/monorepo
- OSS Documentation: https://oss.zero-one-group.com/monorepo
- Available Templates: https://oss.zero-one-group.com/monorepo/available-templates/