This guide will help you get started with the SkillSpark project quickly.
- Prerequisites
- VS Code Setup
- Installation
- Running the Application
- Verification
- Available Commands
- Troubleshooting
Before you begin, ensure you have the following installed on your system:
-
Docker & Docker Compose
- Download from: https://www.docker.com/products/docker-desktop
- Version: Docker 20.10+ and Docker Compose 2.0+
- Verify installation:
docker --version docker compose version
-
Node.js
- Version: 18.x or higher
- Download from: https://nodejs.org/
- Verify installation:
node --version npm --version
-
Bun (JavaScript runtime & package manager)
- Version: 1.0+
- Install:
curl -fsSL https://bun.sh/install | bash - Or visit: https://bun.sh/docs/installation
- Verify installation:
bun --version
-
Go (Golang)
- Version: 1.24.0 or higher
- Download from: https://go.dev/dl/
- Verify installation:
go version
-
Supabase CLI (for database management)
- Install via npm:
npm install -g supabase
- Or visit: https://supabase.com/docs/guides/cli
- Verify installation:
supabase --version
- Install via npm:
-
Make (build automation)
- Linux: Usually pre-installed
- macOS: Install Xcode Command Line Tools
xcode-select --install
- Windows: Install via Chocolatey
choco install make
Install these essential VS Code extensions for the best development experience:
-
Go (
golang.go)- Official Go language support
- Provides IntelliSense, debugging, and testing
-
ESLint (
dbaeumer.vscode-eslint)- JavaScript/TypeScript linting
- Auto-fix on save
-
Prettier - Code formatter (
esbenp.prettier-vscode)- Consistent code formatting
- Works with JavaScript, TypeScript, JSON, CSS, etc.
-
Tailwind CSS IntelliSense (
bradlc.vscode-tailwindcss)- Autocomplete for Tailwind classes
- Syntax highlighting
-
Docker (
ms-azuretools.vscode-docker)- Manage Docker containers and images
- View logs and inspect containers
-
Clone the repository (if you haven't already):
git clone <repository-url> cd skillspark
-
Set up environment variables for backend:
cd backend cp env.sample .envEdit
.envand fill in the required values:
This is the easiest way to run both frontend and backend together.
make upThis command will:
- Build both frontend and backend Docker images
- Start the containers with hot reload enabled
- Set up networking between services
Access your application:
- Frontend: http://localhost
- Backend API: http://localhost:8080
- Backend API Docs: http://localhost:8080/docs
# All services
make logs
# Backend only
make logs-backend
# Frontend only
make logs-frontend# Stop and remove containers
make down
# Stop without removing (preserves state)
make stopmake restartFor development, you might want to run services separately for more control.
-
Navigate to backend directory:
cd backend -
Install Go dependencies:
make deps
-
Start local Supabase (PostgreSQL database):
make db-start
This will start a local Supabase instance on Docker. Note the database URL:
- Dashboard: http://localhost:54323
- Database:
postgresql://postgres:postgres@127.0.0.1:54322/postgres
-
Apply database migrations:
make db-reset
-
Run the backend server:
make dev
The backend will be available at http://localhost:8080
Backend Commands:
make help # Show all available commands
make test # Run all tests
make lint # Run linter
make format # Format code
make db-status # Check database status-
Navigate to frontend directory:
cd frontend/web -
Install dependencies:
bun install
-
Start the development server:
make dev # or directly: bun run devThe frontend will be available at http://localhost:5173
Frontend Commands:
make help # Show all available commands
make build # Build for production
make lint # Run ESLint
make format # Format code with Prettier
make type-check # Run TypeScript type checkingBackend only:
# From project root
make up-backendFrontend only:
# From project root
make up-frontend-
Check Docker containers (if using Docker):
make ps
You should see both
backendandweb-frontendcontainers running. -
Test the backend:
curl http://localhost:8080
-
Test the frontend:
- Open http://localhost (Docker) or http://localhost:5173 (local dev)
- You should see the SkillSpark application
-
Check API documentation:
- Visit http://localhost:8080/docs
- You should see the interactive API documentation
Backend tests:
cd backend
make testFrontend tests:
cd frontend/web
bun testmake help # Show all available commands
make up # Start all services with hot reload
make down # Stop and remove all containers
make restart # Restart all services
make logs # View logs from all services
make build # Build all services
make up-backend # Start only backend
make up-frontend # Start only frontend
make clean # Remove containers and volumescd backend
make help # Show all available backend commands
make dev # Run development server
make test # Run all tests
make lint # Run linter
make format # Format code
make db-start # Start local Supabase
make db-stop # Stop local Supabase
make db-reset # Reset database and apply migrations
make db-new NAME=... # Create new migration
make api-gen # Generate OpenAPI speccd frontend/web
make help # Show all available frontend commands
make dev # Start development server
make build # Build for production
make preview # Preview production build
make lint # Run ESLint
make format # Format code with Prettier
make type-check # Run TypeScript type checking
make check # Run all checks (type, lint, format)
make fix # Fix all issues- Check the logs:
make logs - Read the documentation in
docs/folder - Check existing GitHub issues
- Ask the team on your communication channel
- Read the Contributing Guide
- Check out the Documentation
- Explore the API Documentation when the server is running
- Set up your IDE with the recommended extensions
Reach out to your TLs if you have any issues <3