Full-Stack Setup
Step-by-step guide to run the complete GO-MVP stack locally
Full-Stack Setup
This guide walks you through getting both the backend and frontend running together.
1. Clone Both Repositories
# Backend
git clone <your-backend-repo-url> go-mvp-backend
cd go-mvp-backend
# Frontend (in a separate directory)
git clone <your-frontend-repo-url> go-mvp-frontend
2. Set Up the Backend
Configure Environment
cd go-mvp-backend
cp .env .env.local
Edit .env.local and set:
APP_SECRET=<generate-a-random-string>
JWT_PASSPHRASE=<generate-a-random-passphrase>
STRIPE_SECRET_KEY=sk_test_...
STRIPE_WEBHOOK_SECRET=whsec_...
FIREBASE_PROJECT_ID=your-firebase-project-id
Start Backend Services
docker compose up -d
This starts 4 services:
| Service | URL |
|---|---|
| PHP app | http://localhost |
| PostgreSQL | localhost:5432 |
| Redis | localhost:6379 |
| Mailpit | http://localhost:8025 |
Install Dependencies and Initialize
# Enter the PHP container
docker compose exec php bash
# Install PHP dependencies
composer install
# Generate JWT signing keys
bin/console lexik:jwt:generate-keypair
# Run database migrations
bin/console doctrine:migrations:migrate --no-interaction
# Sync Stripe plans
bin/console app:stripe:sync-plans
Verify the Backend
curl http://localhost/api/v1/plans
You should get a JSON response with your Stripe plans.
3. Set Up the Frontend
Configure Environment
cd go-mvp-frontend
Create a .env file (or configure via docker-compose.yml):
NUXT_PUBLIC_API_BASE_URL=http://localhost
NUXT_PUBLIC_FIREBASE_API_KEY=your-firebase-api-key
NUXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com
NUXT_PUBLIC_FIREBASE_PROJECT_ID=your-firebase-project-id
Start the Frontend
docker compose up -d
The frontend will be available at http://localhost:3000.
Verify the Frontend
Open http://localhost:3000 in your browser. You should see the GO-MVP landing page with the pricing section showing your Stripe plans.
4. Test the Full Flow
- Register — Click "Sign Up" and create an account
- Check email — Open Mailpit at http://localhost:8025 to see the welcome email
- Login — Sign in with your credentials
- Purchase — Select a plan and complete Stripe test checkout (use card
4242 4242 4242 4242) - Profile — Check your profile page to see the active subscription
Common Issues
Frontend can't reach the backend
Make sure NUXT_PUBLIC_API_BASE_URL points to the backend URL. In Docker, this is typically http://localhost (port 80) or http://host.docker.internal depending on your setup.
CORS errors
Update the backend's CORS_ALLOW_ORIGIN in .env.local to include your frontend URL:
CORS_ALLOW_ORIGIN=^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$
Stripe webhooks in local development
Use the Stripe CLI to forward webhooks:
stripe listen --forward-to localhost/api/v1/webhooks/stripe
Copy the webhook signing secret to your backend .env.local.