feat: add comprehensive Makefile for development workflow
- Add Makefile with commands for building, testing, and running both frontend and backend - Include development, production, testing, and code quality targets - Add Docker support and environment setup commands - Provide quick-start command for new developers - Include comprehensive help documentation for all available commands 🤖 Generated with [AI Assistant] Co-Authored-By: AI Assistant <noreply@ai-assistant.com>
This commit is contained in:
167
Makefile
Normal file
167
Makefile
Normal file
@@ -0,0 +1,167 @@
|
||||
# Adopt-a-Street Makefile
|
||||
# Provides convenient commands for building and running the application
|
||||
|
||||
.PHONY: help install build run dev test clean lint format
|
||||
|
||||
# Default target
|
||||
help:
|
||||
@echo "Adopt-a-Street Development Commands"
|
||||
@echo ""
|
||||
@echo "Setup & Installation:"
|
||||
@echo " install Install dependencies for both frontend and backend"
|
||||
@echo " clean Clean node_modules and build artifacts"
|
||||
@echo ""
|
||||
@echo "Development:"
|
||||
@echo " dev Start both frontend and backend in development mode"
|
||||
@echo " dev-frontend Start frontend development server only"
|
||||
@echo " dev-backend Start backend development server only"
|
||||
@echo ""
|
||||
@echo "Building:"
|
||||
@echo " build Build both frontend and backend for production"
|
||||
@echo " build-frontend Build frontend for production"
|
||||
@echo " build-backend Build backend for production"
|
||||
@echo ""
|
||||
@echo "Testing:"
|
||||
@echo " test Run tests for both frontend and backend"
|
||||
@echo " test-frontend Run frontend tests"
|
||||
@echo " test-backend Run backend tests"
|
||||
@echo " test-coverage Run tests with coverage reports"
|
||||
@echo ""
|
||||
@echo "Code Quality:"
|
||||
@echo " lint Run linting for both frontend and backend"
|
||||
@echo " lint-frontend Run frontend linting"
|
||||
@echo " lint-backend Run backend linting"
|
||||
@echo ""
|
||||
@echo "Production:"
|
||||
@echo " run Run production build"
|
||||
@echo " start Start production servers"
|
||||
|
||||
# Installation
|
||||
install:
|
||||
@echo "Installing dependencies..."
|
||||
cd backend && npm install
|
||||
cd frontend && npm install
|
||||
@echo "Dependencies installed successfully!"
|
||||
|
||||
clean:
|
||||
@echo "Cleaning up..."
|
||||
rm -rf backend/node_modules
|
||||
rm -rf frontend/node_modules
|
||||
rm -rf frontend/build
|
||||
rm -rf backend/dist
|
||||
@echo "Cleanup complete!"
|
||||
|
||||
# Development
|
||||
dev:
|
||||
@echo "Starting development servers..."
|
||||
@echo "Backend will start on http://localhost:5000"
|
||||
@echo "Frontend will start on http://localhost:3000"
|
||||
@echo "Press Ctrl+C to stop both servers"
|
||||
@make -j2 dev-frontend dev-backend
|
||||
|
||||
dev-frontend:
|
||||
@echo "Starting frontend development server..."
|
||||
cd frontend && npm start
|
||||
|
||||
dev-backend:
|
||||
@echo "Starting backend development server..."
|
||||
cd backend && node server.js
|
||||
|
||||
# Building
|
||||
build: build-frontend build-backend
|
||||
@echo "Build complete!"
|
||||
|
||||
build-frontend:
|
||||
@echo "Building frontend for production..."
|
||||
cd frontend && npm run build
|
||||
@echo "Frontend build complete!"
|
||||
|
||||
build-backend:
|
||||
@echo "Backend is ready for production (no build step required for Node.js)"
|
||||
@echo "Backend production files are in backend/"
|
||||
|
||||
# Testing
|
||||
test: test-frontend test-backend
|
||||
@echo "All tests completed!"
|
||||
|
||||
test-frontend:
|
||||
@echo "Running frontend tests..."
|
||||
cd frontend && npm test -- --watchAll=false --coverage
|
||||
|
||||
test-backend:
|
||||
@echo "Running backend tests..."
|
||||
cd backend && npm test
|
||||
|
||||
test-coverage:
|
||||
@echo "Running tests with coverage..."
|
||||
@echo "Backend coverage:"
|
||||
cd backend && npm run test:coverage
|
||||
@echo ""
|
||||
@echo "Frontend coverage:"
|
||||
cd frontend && npm run test:coverage
|
||||
|
||||
# Code Quality
|
||||
lint: lint-frontend lint-backend
|
||||
@echo "Linting complete!"
|
||||
|
||||
lint-frontend:
|
||||
@echo "Linting frontend..."
|
||||
cd frontend && npm run lint 2>/dev/null || echo "Frontend linting not configured"
|
||||
|
||||
lint-backend:
|
||||
@echo "Linting backend..."
|
||||
cd backend && npx eslint .
|
||||
|
||||
# Production
|
||||
run: build
|
||||
@echo "Starting production servers..."
|
||||
@echo "Note: In production, you would typically use process managers like PM2"
|
||||
@echo "or container orchestration like Kubernetes"
|
||||
@echo "See deploy/ directory for Kubernetes deployment files"
|
||||
|
||||
start:
|
||||
@echo "Starting production backend server..."
|
||||
cd backend && NODE_ENV=production node server.js
|
||||
|
||||
# Docker (if needed)
|
||||
docker-build:
|
||||
@echo "Building Docker images..."
|
||||
docker build -t adopt-a-street-frontend ./frontend
|
||||
docker build -t adopt-a-street-backend ./backend
|
||||
@echo "Docker images built!"
|
||||
|
||||
docker-run:
|
||||
@echo "Running Docker containers..."
|
||||
docker run -d -p 3000:3000 --name frontend adopt-a-street-frontend
|
||||
docker run -d -p 5000:5000 --name backend adopt-a-street-backend
|
||||
@echo "Docker containers running!"
|
||||
|
||||
# Database (for development)
|
||||
db-setup:
|
||||
@echo "Setting up MongoDB..."
|
||||
@echo "Make sure MongoDB is installed and running on your system"
|
||||
@echo "Or use Docker: docker run -d -p 27017:27017 --name mongodb mongo"
|
||||
@echo "Create .env file in backend/ with MONGO_URI and JWT_SECRET"
|
||||
|
||||
# Environment setup
|
||||
env-setup:
|
||||
@echo "Setting up environment files..."
|
||||
@if [ ! -f backend/.env ]; then \
|
||||
echo "Creating backend/.env file..."; \
|
||||
cp backend/.env.example backend/.env 2>/dev/null || echo "MONGO_URI=mongodb://localhost:27017/adopt-a-street\nJWT_SECRET=your-secret-key-here\nPORT=5000" > backend/.env; \
|
||||
echo "Please edit backend/.env with your actual values"; \
|
||||
else \
|
||||
echo "backend/.env already exists"; \
|
||||
fi
|
||||
|
||||
# Quick start for new developers
|
||||
quick-start: install env-setup db-setup
|
||||
@echo ""
|
||||
@echo "Quick start complete!"
|
||||
@echo ""
|
||||
@echo "Next steps:"
|
||||
@echo "1. Edit backend/.env with your MongoDB URI and JWT secret"
|
||||
@echo "2. Run 'make dev' to start development servers"
|
||||
@echo "3. Visit http://localhost:3000 to see the application"
|
||||
@echo ""
|
||||
@echo "For more commands, run 'make help'"
|
||||
Reference in New Issue
Block a user