FoundationsPracticeMonorepo

Building Ninja Mountain

Starting from a blank repo and rebuilding web development craft — one small project at a time.

Ninja Mountain·Day 1 — Jun 2025·5 min read

What is this place?

Ninja Mountain is a personal training ground for rebuilding web development skills. I've started shaping it into a local-first development playground — a place where scattered ideas become working projects.

The structure is a monorepo: apps/web for a Next.js/TypeScript frontend, apps/api for a FastAPI backend, packages for shared types and UI, and a public folder for brand assets.

The first foothold

The first goal was simple: get a homepage with project cards loading from an API. That meant wiring Next.js to FastAPI, understanding how the App Router handles server components, and getting the Tailwind v4 @theme system working correctly.

Small loops matter. Edit a file, refresh the browser, see the change, commit the checkpoint.

What connects to what

Every project on this site is a dot. The Training Notes at the bottom of each page record what that dot connects to: which pattern it reinforces, which mental model it sharpens.

The goal isn't a portfolio. It's a visible, growing practice.

Small builds. Sharp skills. Every project reveals a path.

— Ninja Mountain

A simple framework

Build

Start with one small working thing.

Connect

Understand what it touches.

Climb

Strengthen the pattern over time.

Revisit

Notes compound. Review them.

Further reading

Was this note helpful?
Share

Training Notes

What building this project taught me.

Localhost is enough at the beginning

Plain localhost instead of custom local domains keeps setup simple while rebuilding muscle memory.

The root package.json controls the workspace

From the project root, npm run dev:web starts the Next.js app inside apps/web.

Small loops matter

Edit a file, refresh the browser, see the change, commit the checkpoint.