docs: update README and deployment workflow

This commit is contained in:
Marco Allegretti 2026-01-29 00:48:14 +01:00
parent 8ad0ac8a7a
commit 5fd905c9b7
4 changed files with 48 additions and 42 deletions

View file

@ -28,7 +28,7 @@ git clone https://codeberg.org/likwid/likwid
cd likwid cd likwid
# Copy environment configuration # Copy environment configuration
cp .env.example .env cp backend/.env.example backend/.env
# Start development environment # Start development environment
# Windows: # Windows:
@ -203,6 +203,6 @@ Help newcomers, answer questions patiently, and remember that everyone was new o
## License ## License
By contributing, you agree that your contributions will be licensed under LGPL-2.1-or-later. By contributing, you agree that your contributions will be licensed under EUPL-1.2.
--- ---

View file

@ -37,8 +37,10 @@ cp compose/.env.production.example compose/.env.production
# - Set random JWT_SECRET (64+ chars) # - Set random JWT_SECRET (64+ chars)
# - Set your domain in API_BASE # - Set your domain in API_BASE
# 3. Remove demo seed migration (important!) # 3. Ensure demo seed data is excluded
rm backend/migrations/20260127150000_demo_seed_data.sql # - Demo seed migrations live in backend/migrations_demo
# - backend/src/main.rs only runs migrations_demo when DEMO_MODE=true
# - compose/production.yml builds the backend with INCLUDE_DEMO_SEED=false
# 4. Deploy # 4. Deploy
cd compose cd compose
@ -97,8 +99,8 @@ To reset the demo to a clean state:
./scripts/demo-reset.sh ./scripts/demo-reset.sh
# Or manually: # Or manually:
podman-compose -f compose/demo.yml down -v podman-compose --env-file compose/.env.demo -f compose/demo.yml down -v
podman-compose --env-file .env.demo -f compose/demo.yml up -d podman-compose --env-file compose/.env.demo -f compose/demo.yml up -d
``` ```
## Configuration Reference ## Configuration Reference
@ -133,12 +135,14 @@ For local development without containers:
# 1. Start only the database # 1. Start only the database
podman-compose -f compose/dev.yml up -d podman-compose -f compose/dev.yml up -d
# 2. Run backend natively # 2. Configure backend environment
cp backend/.env.example backend/.env
# 3. Run backend natively
cd backend cd backend
cp ../.env.example .env # Configure DATABASE_URL
cargo run cargo run
# 3. Run frontend natively # 4. Run frontend natively
cd frontend cd frontend
npm run dev npm run dev
``` ```
@ -147,10 +151,10 @@ npm run dev
```bash ```bash
# View all logs # View all logs
podman-compose -f compose/demo.yml logs -f podman-compose --env-file compose/.env.demo -f compose/demo.yml logs -f
# View specific service # View specific service
podman-compose -f compose/demo.yml logs -f backend podman-compose --env-file compose/.env.demo -f compose/demo.yml logs -f backend
# Check health # Check health
curl http://localhost:3001/health curl http://localhost:3001/health
@ -161,10 +165,10 @@ curl http://localhost:3001/health
### Database connection issues ### Database connection issues
```bash ```bash
# Check if postgres is running # Check if postgres is running
podman-compose -f compose/demo.yml ps podman-compose --env-file compose/.env.demo -f compose/demo.yml ps
# View postgres logs # View postgres logs
podman-compose -f compose/demo.yml logs postgres podman-compose --env-file compose/.env.demo -f compose/demo.yml logs postgres
``` ```
### Migration failures ### Migration failures
@ -182,7 +186,6 @@ SELECT * FROM _sqlx_migrations;
### Reset everything ### Reset everything
```bash ```bash
# Nuclear option - removes all data and volumes # Nuclear option - removes all data and volumes
podman-compose -f compose/demo.yml down -v podman-compose --env-file compose/.env.demo -f compose/demo.yml down -v
podman volume prune -f podman-compose --env-file compose/.env.demo -f compose/demo.yml up -d
podman-compose -f compose/demo.yml up -d
``` ```

View file

@ -4,7 +4,7 @@
Likwid is an open-source platform for participatory governance, designed to make collective decision-making accessible, transparent, and genuinely democratic. Built for communities, civic organizations, and any group that values structured deliberation over shouting matches. Likwid is an open-source platform for participatory governance, designed to make collective decision-making accessible, transparent, and genuinely democratic. Built for communities, civic organizations, and any group that values structured deliberation over shouting matches.
> *"We are citizens of the 21st century, but we rely on institutions designed in the 19th century. The problem is not democracy, it's the interface."* > *"We are citizens of the 21st century, but we rely on institutions designed in the 19th century, through means designed in the 13th century. The problem is not democracy, it's the interface."*
## Philosophy ## Philosophy
@ -33,7 +33,7 @@ Likwid implements the principles of **Democracy Design**:
- **Quadratic Voting** — express intensity of preference - **Quadratic Voting** — express intensity of preference
### Liquid Delegation ### Liquid Delegation
- Delegate your vote by topic or globally - Delegate your vote globally or within a community
- Real-time transparency: see how delegates vote - Real-time transparency: see how delegates vote
- Revoke delegation instantly - Revoke delegation instantly
- Transitive delegation chains - Transitive delegation chains
@ -84,7 +84,7 @@ Likwid implements the principles of **Democracy Design**:
# 1. Clone and configure # 1. Clone and configure
git clone https://invent.kde.org/marcoa/likwid.git git clone https://invent.kde.org/marcoa/likwid.git
cd likwid cd likwid
cp .env.example .env cp backend/.env.example backend/.env
# 2. Start everything (database + backend + frontend) # 2. Start everything (database + backend + frontend)
.\scripts\dev-start.ps1 .\scripts\dev-start.ps1
@ -148,7 +148,7 @@ likwid/
## License ## License
LGPL-2.1-or-later EUPL-1.2
## Acknowledgments ## Acknowledgments
Inspired by: Inspired by:

View file

@ -25,8 +25,8 @@
## Daily Development Workflow ## Daily Development Workflow
### Your current setup IS the demo ### Your local setup can behave like the demo
Your local environment with `DEMO_MODE=true` and the seeded database is functionally equivalent to the demo deployment. Your local environment is functionally equivalent to the demo deployment when `DEMO_MODE=true` and demo seed migrations have been applied (from `backend/migrations_demo`).
### Making code changes ### Making code changes
1. Edit code normally 1. Edit code normally
@ -50,6 +50,9 @@ cd backend
sqlx database drop -y sqlx database drop -y
sqlx database create sqlx database create
sqlx migrate run sqlx migrate run
# If you want demo seed data, also run:
sqlx migrate run --source migrations_demo
``` ```
### Option 2: Use the reset script (when using containers) ### Option 2: Use the reset script (when using containers)
@ -68,14 +71,11 @@ podman-compose --env-file compose/.env.demo -f compose/demo.yml up -d
### For real users (Production) ### For real users (Production)
```bash ```bash
# 1. Remove demo seed data # 1. Configure production
rm backend/migrations/20260127150000_demo_seed_data.sql
# 2. Configure production
cp compose/.env.production.example compose/.env.production cp compose/.env.production.example compose/.env.production
# Edit with secure passwords and your domain # Edit with secure passwords and your domain
# 3. Deploy # 2. Deploy
podman-compose --env-file compose/.env.production -f compose/production.yml up -d podman-compose --env-file compose/.env.production -f compose/production.yml up -d
``` ```
@ -84,29 +84,32 @@ podman-compose --env-file compose/.env.production -f compose/production.yml up -
### "I broke the demo data" ### "I broke the demo data"
```powershell ```powershell
cd backend cd backend
sqlx database drop -y && sqlx database create && sqlx migrate run sqlx database drop -y
sqlx database create
sqlx migrate run
``` ```
### "I want to test production-like (no demo data)" ### "I want to test production-like (no demo data)"
```powershell ```powershell
# Temporarily move the demo migration
mv backend/migrations/20260127150000_demo_seed_data.sql backend/migrations/20260127150000_demo_seed_data.sql.bak
# Reset database
sqlx database drop -y && sqlx database create && sqlx migrate run
# Set DEMO_MODE=false in .env # Set DEMO_MODE=false in .env
# Reset database (core migrations only)
cd backend
sqlx database drop -y
sqlx database create
sqlx migrate run
``` ```
### "I want demo data back" ### "I want demo data back"
```powershell ```powershell
# Restore migration
mv backend/migrations/20260127150000_demo_seed_data.sql.bak backend/migrations/20260127150000_demo_seed_data.sql
# Reset database
sqlx database drop -y && sqlx database create && sqlx migrate run
# Set DEMO_MODE=true in .env # Set DEMO_MODE=true in .env
# Reset database + re-seed demo
cd backend
sqlx database drop -y
sqlx database create
sqlx migrate run
sqlx migrate run --source migrations_demo
``` ```
### "I want to run both demo and production locally" ### "I want to run both demo and production locally"
@ -120,6 +123,6 @@ Use the container deployments - they use different ports:
|---------|----------| |---------|----------|
| Code changes affect demo? | Yes, same codebase. That's expected. | | Code changes affect demo? | Yes, same codebase. That's expected. |
| Data separation | Different databases (demo vs prod) | | Data separation | Different databases (demo vs prod) |
| Reset demo | `sqlx database drop && create && migrate` | | Reset demo | `sqlx database drop; sqlx database create; sqlx migrate run; sqlx migrate run --source migrations_demo` |
| Test production locally | Remove demo migration, set DEMO_MODE=false | | Test production locally | Set DEMO_MODE=false and run only core migrations (skip `migrations_demo`) |
| Deploy for others | Use compose files with separate DBs | | Deploy for others | Use compose files with separate DBs |