Docker Setup
Get Straktur running with one command
The fastest way to run Straktur. One command gives you everything.
Requirements
You need Docker installed on your machine. Choose one:
| App | Platform | Notes |
|---|---|---|
| OrbStack | macOS | Recommended - fast & lightweight |
| Docker Desktop | macOS, Windows, Linux | Official Docker app |
Quick Start
# Clone the repository (use your purchased repo URL)
git clone <your-repo-url>
cd straktur
# Start everything
docker compose upFirst run takes 2-5 minutes (downloading images, installing dependencies). After that, starts in ~30 seconds.
Once ready, open http://localhost:3000
| Password | |
|---|---|
[email protected] | testingpassword |
That's it! You now have a fully working app.
What's Running
| Service | URL | What is it? |
|---|---|---|
| App | http://localhost:3000 | Your Straktur application |
| Mailpit | http://localhost:8080 | Local email server - catches all emails sent by the app so you can preview them without sending real emails |
| MinIO | http://localhost:9001 | Local S3-compatible file storage - handles file uploads (avatars, attachments) without needing AWS |
MinIO credentials: minioadmin / minioadmin
Demo Data
To make your start easier, we've prepared demo data that shows you what a real app built with Straktur looks like.
Explore it to see how everything works together - navigation patterns, UI components, data tables, forms, file uploads, and all the features you get out of the box. It's the best way to understand Straktur before building your own features.
What's included:
- 44 companies with logos and details
- 70+ contacts linked to companies
- Activities, relationships, and file attachments
- All dictionary values (statuses, industries, regions)
Starting fresh
Want to start with an empty database instead? Set SEED_DEMO_DATA: "false" in docker-compose.yml and run:
docker compose down -v
docker compose upCommon Commands
Start the app
docker compose upStarts everything and shows logs in your terminal. You'll see what's happening in real-time, but your terminal is busy. Press Ctrl+C to stop.
docker compose up -dStarts in background - your terminal stays free. Use this when you don't need to watch logs.
View logs
docker compose logs -f appShows app logs in real-time. Useful when you started in background or need to debug why something isn't working.
Stop the app
docker compose downStops all containers. Your data (database, files) is preserved - next docker compose up will have everything as you left it.
Full reset
docker compose down -v
docker compose upWarning: The -v flag deletes ALL data - database, uploaded files, everything. Use this only when you want to start completely fresh.
Using a Different Port
Port 3000 already in use? Change it:
APP_PORT=3001 docker compose upThen open http://localhost:3001
Development vs Production
By default, Docker runs in development mode with hot reload and devtools.
Development (default)
docker compose up- Hot reload enabled
- TanStack Query and Next.js devtools visible
- Faster startup (no build step)
Production mode
APP_MODE=production docker compose upOr set in .env:
APP_MODE=productionProduction mode:
- Builds the app first (
npm run build) - Runs optimized
next startinstead ofnext dev - No devtools icons
- Better performance, closer to real deployment
Use production mode to test performance or verify your build works before deploying.
Troubleshooting
Can't log in
Make sure you're using the correct credentials:
- Email:
[email protected] - Password:
testingpassword
If it still doesn't work, the seed might have failed. Check logs and try resetting:
docker compose down -v
docker compose upApp shows errors or blank page
Check what's happening in the logs:
docker compose logs -f appLook for error messages - they usually tell you what's wrong.
Code changes not visible
If your changes aren't showing up, restart the app container:
docker compose restart appDatabase not responding
Check if PostgreSQL is running:
docker compose ps
docker compose logs dbWait for "database system is ready to accept connections" message. If it's not starting, try a full reset:
docker compose down -v
docker compose upNext Steps
- Project Structure - Understand the codebase
- Add Your First Feature - Build something