Welcome to LaunchPad, the official Strapi demo application. This project is a full-stack starter kit combining Strapi 5 (CMS) and Next.js (Frontend) with a pre-configured PostgreSQL database.
Do not build your images directly on a low-RAM VPS! We highly recommend using the Private Docker Registry Boilerplate to store your pre-built images. This ensures a lightweight, fast, and secure deployment cycle.
To avoid port conflicts on local machines, we use different port ranges for Docker and Local development.
| Service | Local Dev (Non-Docker) | Docker (Production-ready) |
|---|---|---|
| Strapi Backend | http://localhost:1338 | http://localhost:1337 |
| Next.js Frontend | http://localhost:3002 | http://localhost:3000 |
| PostgreSQL | localhost:5430 |
localhost:5432 (Internal) |
| Adminer (DB UI) | http://localhost:8080 | http://localhost:8080 |
| Swagger Docs | /documentation/v1.0.0 | /documentation/v1.0.0 |
Best for speed, hot-reloading, and avoiding Windows/Docker permission issues.
Ensure only the Database and DB UI are running in Docker:
docker-compose up -d strapiDB adminerInstall dependencies and sync .env files across root, strapi/, and next/:
yarn setupTip: The
yarn setupscript automatically generates unique secrets fortobemodifiedkeys in your.envfiles.
Start both Strapi and Next.js concurrently:
yarn dev- Strapi will be available at
1338. - Next.js will be available at
3002.
Best for production simulation or consistent environments.
docker-compose up -d --buildIf you modify Code or Environment Variables, follow this workflow to ensure Docker is synced:
- Down:
docker-compose down - Build:
docker-compose build nextjs strapi(Bypass cache to bake in new Env vars with --no-cache args) - Up:
docker-compose up -d
If the Strapi Admin UI shows blank/broken pages, it's likely a hydration issue. Run a clean rebuild:
docker-compose down -v
docker-compose build --no-cache
docker-compose up -dTo populate your instance with the provided demo content:
# If running Local Dev
cd strapi && yarn seed
# If running in Docker (Windows users MUST use -u root)
docker exec -it -u root strapi yarn seed- Adminer: http://localhost:8080
- Server:
strapiDB - Username/Password: See your
.envfile (strapi/strapi_secure_password_123)
- Image URL Logic: We use
NEXT_PUBLIC_STRAPI_URLto ensure the browser loads images from the correct endpoint, bypassing Docker's internal networking issues. - Port Conflicts: Port
3000/1337are reserved for Docker. Port3002/1338are for Local Dev. - Git Hygiene:
- Don't commit
.envfiles. src/extensions/documentationfiles can be committed if you want to track API changes, or ignored if you want Strapi to auto-generate them.
- Don't commit
- Next.js 15+ & Strapi 5: Cutting edge tech stack.
- Dynamic Zones: Build complex pages with reusable blocks.
- SEO Optimized: Pre-configured SEO component and metadata handling.
- Multi-lingual: Full i18n support.
Docs β’ Discord β’ YouTube β’ Strapi Design System β’ Marketplace β’ Cloud Free Trial
This project is part of the LaunchPad ecosystemβa complete suite of boilerplates designed for high-performance, production-ready development. Check out the other repositories to complete your stack:
- π± LaunchPad Mobile Native: A React Native/Expo mobile app boilerplate configured for seamless Strapi integration.
- π» LaunchPad CMS Fullstack: A full-stack starter kit combining Next.js (Frontend) and Strapi 5 (Headless CMS) with Docker support.
- π³ LaunchPad Registry Stack: A lightweight, self-hosted private Docker Registry with Web UI to streamline your CI/CD and save VPS resources.
βοΈ If you find this ecosystem useful, please consider giving the repositories a star on GitHub!
-
The Strapi application contains a custom population middlewares in every api route.
-
The Strapi application contains a postinstall script that will regenerate an uuid for the project in order to get some anonymous usage information concerning this demo. You can disable it by removing the uuid inside the
./strapi/packages.jsonfile. -
The Strapi application contains a patch for the @strapi/admin package. It is only necessary for the hosted demos since we automatically create the Super Admin users for them when they request this demo on our website.
