Skip to content
azhou555Public

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Guitar World 🎸

A beginner-friendly guitar learning web application built with React, TypeScript, and Express in a modern monorepo setup.

Tech Stack

  • Frontend: React + TypeScript + Vite
  • Backend: Express + TypeScript + Node.js
  • Database: PostgreSQL + Prisma (coming soon)
  • Monorepo: pnpm + TurboRepo
  • Linting: ESLint + Prettier
  • Git Hooks: Husky + lint-staged + commitlint
  • CI/CD: GitHub Actions

Project Structure

guitar-world/
├── apps/
│   ├── web/          # React frontend (Vite)
│   └── api/          # Express backend
├── packages/
│   ├── config/       # Shared ESLint/Prettier configs
│   └── tsconfig/     # Shared TypeScript configs
├── .github/
│   └── workflows/    # GitHub Actions CI
└── package.json      # Root workspace config

Getting Started

Prerequisites

  • Node.js 18+
  • pnpm 8+

Installation

  1. Install dependencies:

    pnpm install
  2. Setup git hooks:

    pnpm prepare

Development

Run both frontend and backend in development mode:

pnpm dev

This will start:

Individual App Commands

Run frontend only:

pnpm --filter @guitar-world/web dev

Run backend only:

pnpm --filter @guitar-world/api dev

Building

Build all apps:

pnpm build

Testing & Linting

Run type checking:

pnpm typecheck

Run linting:

pnpm lint

Run tests:

pnpm test

Format code:

pnpm format

API Endpoints

  • GET / - API info
  • GET /healthz - Health check (returns { status: "ok" })

Development Workflow

  1. Create a feature branch
  2. Make your changes
  3. Commit using conventional commits (enforced by commitlint)
  4. Push your branch
  5. Create a pull request

Commit Message Format

This project uses conventional commits:

feat: add new guitar tuner feature
fix: resolve chord recognition bug
docs: update API documentation

CI/CD

GitHub Actions automatically runs on pull requests:

  • Type checking
  • Linting
  • Testing
  • Building

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feat/amazing-feature)
  3. Commit your changes (git commit -m 'feat: add amazing feature')
  4. Push to the branch (git push origin feat/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages