A full-stack web application that allows users to search for artists on Setlist.fm, view their recent concerts, and create Spotify playlists from setlists.
- Search for artists using Setlist.fm API
- View recent concerts and setlists
- Create Spotify playlists from setlists with a single click
- Secure authentication with Spotify OAuth
- Backend: TypeScript, Node.js v22, Express
- Frontend: React 18, Next.js 14, TypeScript
- Infrastructure: AWS CDK (CloudFront, S3, Lambda, API Gateway)
- Testing: Jest, React Testing Library
- CI/CD: GitHub Actions
- Node.js (v22+)
- Docker
- AWS CLI (for deployment)
- Setlist.fm API key
- Spotify Developer account
-
Clone the repository
-
Install correct Node.js version:
Option A: Using asdf (recommended)
# Install asdf plugins (if not already installed) asdf plugin add nodejs asdf plugin add npm # Install and use the project's defined versions asdf install
Option B: Using nvm
# Install and use the Node.js version specified in .nvmrc nvm install nvm useOption C: Manual installation
- Install Node.js 22+ and npm 10.9.2+ manually
-
Create a
.envfile in both thebackendandfrontenddirectories (see.env.example) -
Run
make setupto install dependencies
# Start the full stack locally (Docker)
make dev
# Run backend only
make backend
# Run frontend only
make frontend
# Start frontend production server
make start-frontend
# Serve built static files
make serve-frontend# Build all projects
make build-all
# Build backend only
make build-backend
# Build frontend only
make build-frontend
# Build infrastructure only
make build-infra# Run all tests
make test
# Run backend tests
make test-backend
# Run frontend tests
make test-frontend
# Run tests with coverage (required to be 100%)
make test-coverage
# Run TypeScript type checking
make typecheck
# Run linting
make lint
# Run linting with auto-fix
make lint-fix
# Run pre-commit checks (typescript, lint, tests, coverage)
make pre-commit-check# Clean and reinstall all dependencies
make clean-install
# Install all dependencies
make install-all
# Check for outdated dependencies
make deps-check
# Update dependencies safely
make deps-update
# Audit dependencies for vulnerabilities
make deps-audit- AWS account
- GitHub repository with OIDC configured for AWS
- Node.js 22+ and npm 10.9.2+
- AWS CLI configured with appropriate credentials
# Deploy all infrastructure and applications to AWS
make deploy
# Synthesize CloudFormation templates
make cdk-synth
# Check infrastructure changes before deploying
make cdk-diffThe application is automatically deployed to AWS when changes are pushed to the main branch using GitHub Actions with the following checks:
- TypeScript compilation checks
- Linting verification
- Test execution with 100% coverage requirement
- Pre-commit validation
- Infrastructure deployment
# Clean build artifacts and generated files
make clean
# View all available commands
make helpThe application follows clean architecture principles:
- Frontend: React/Next.js application hosted on S3 + CloudFront
- Backend: Node.js APIs deployed as Lambda functions behind API Gateway
- Security: Secrets stored in AWS Secrets Manager, HTTPS enforced, OAuth for authentication
MIT