/New-Codebase-Outline

A master list of somewhat-sequential steps and considerations I perform when taking on a new (or existing) project

New Codebase Outline - In Order of Operations

The following document is offered for free to the public under the GNU Free Documentation License: https://www.gnu.org/licenses/fdl-1.3.html

High-Level Use Case Survey

  • Business requirements
  • Design review
  • Integrations with existing in-house platform(s)

Project Management

  • Platform
    • Jira | ZenHub | Asana | Monday | ClickUp | Favro | Notion
  • Structure
    • Agile | Kanban | Scrum | Ad-hoc

Architectural Decisions

  • JS Framework
    • Static | SSR | SSG | SPA
  • Server Requirements
    • Persistent (Linux) | Edge (On-Demand)
  • Remote Repository
    • GitHub | GitBucket
  • Database
    • Relational (MySQL | PostgreSQL | MariaDB) |
    • Document (Firebase | MongoDB)
    • Key-Value (Redis)
    • Centralized | Distributed
    • On-Premises | Cloud
  • Asset Storage
    • S3 | Cloudflare
  • Log Drain
  • Analytics

Repository

Local

  • Repo init
  • Branch structure: main | staging | dev > workspace-feature-task

Remote

  • Create remote repo account(s)
  • Init push
  • Establish pull guards / branch protections
  • Set up issue tracking

Dev Environment

  • VS Code + Docker Dev Environment (for consistent dev environments across all computers)

Monorepo Structure

  • Frontend Application(s)
    • Web Client
    • Mobile Client
    • Admin Client
  • Backend Services
    • API
  • Shared - Utilities and Components

Initial Dependencies and Configs

  • Framework

    • Remote sources
    • HTTP Header hooks
    • Package transpiling (monorepo shared utils)
  • TypeScript

    • Base URL + non-relative import remapping
    • References (monorepo shared utils)
  • Monorepo Tooling

    • TurboRepo | NX | Lerna
  • Linting

    • ESLint
  • Precommit

    • Husky
    • lint-staged
  • CSS Utility Classes

    • Tailwind | Bootstrap
  • Testing

    • Cypress | Jest | Mocha | Puppeteer
  • Common utilities

    • lodash | classNames | redirects | error classes | hooks

CSS Globals

  • Overrides
  • Colors
  • Fonts
  • Custom utility classes

Deployment Overview and Setup

  • Collect DNS information
  • Client Hosting environment
    • Vercel | AWS | Firebase | Linode | Cloudflare
  • Database Hosting environment
  • CI/CD Pipeline
  • Log Drain
  • Analytics
  • Anything Dockerized?
  • Regions?
  • Projected # of users?

Mock Services

  • APIs
  • ORM / Database
  • Emulators
  • NEXT_PUBLIC_ Env Vars (if using NextJs)

Identity + Access Management

  • Authentication
  • Authorization
  • Roles
  • User Data

Backend Development Cycle

  • API Development
    • Auto-documentation
    • Security
  • Database
    • Define initial schemas
    • Initial migration

Frontend Development Cycle

Components Palette

  • Navigation
    • Mobile / Desktop
  • Layouts
    • Inject meta
  • Hero Areas / CTAs
  • Buttons
  • Cards
  • Footers
  • ...