Free Alberta
Free Alberta is a comprehensive political campaign and advocacy platform built on Changemaker Lite. This platform provides self-hosted services for creating, managing, and automating political campaign workflows specific to Alberta's political landscape.
About This Project
This project leverages the Changemaker Lite framework to deliver:
- Campaign management and automation tools
- Interactive mapping for geographic organizing
- Constituent engagement and advocacy tools (Influence)
- Documentation and development infrastructure
Changemaker Lite provides the core infrastructure (documentation, code server, email campaigns, workflow automation), while Free Alberta extends it with Alberta-specific tools for political organizing and advocacy.
Features
- Homepage: Modern dashboard for accessing all services
- Code Server: VS Code in your browser for remote development
- MkDocs Material: Beautiful documentation with live preview
- Static Site Server: High-performance hosting for built sites
- Listmonk: Self-hosted newsletter and email campaign management
- PostgreSQL: Reliable database backend
- n8n: Workflow automation and service integration
- NocoDB: No-code database platform and smart spreadsheet interface
- Map: Interactive map visualization for geographic data with real-time geolocation, walk sheet generation, and QR code integration
- Influence: Campaign tool for connecting Alberta residents with elected representatives at all government levels
Quick Start
The whole system can be set up in minutes using Docker Compose. It is recommended to run this on a server with at least 8GB of RAM and 4 CPU cores for optimal performance. Instructions to build to production are available in the mkdocs/docs/build directory, at cmlite.org, or in the site preview.
# Clone the repository
git clone https://git.freealberta.org/admin/freealberta.git
cd freealberta
# Configure environment (creates .env file)
./config.sh
# Start all services
docker compose up -d
Map
Instructions on how to build the map are available in the map directory.
Instructions on how to build for production are available in the mkdocs/docs/build directory or in the site preview.
Quick Start for Map
Update the .env file in the map directory with your NocoDB URLs, and then run:
cd map
docker compose up -d
Influence
The Influence Campaign Tool helps Alberta residents connect with elected representatives at federal, provincial, and municipal levels. Users can look up representatives by postal code and send advocacy emails through customizable campaigns.
Detailed setup and configuration instructions are available in the influence/README.MD file.
Quick Start for Influence
Configure your environment and start the service:
cd influence
cp example.env .env
# Edit .env with your NocoDB and SMTP settings
./scripts/build-nocodb.sh # Set up database tables
docker compose up -d
Service Access
After starting, access services at:
- Homepage Dashboard: http://localhost:3010
- Documentation (Dev): http://localhost:4000
- Documentation (Built): http://localhost:4001
- Code Server: http://localhost:8888
- Listmonk: http://localhost:9000
- n8n: http://localhost:5678
- NocoDB: http://localhost:8090
- Map Viewer: http://localhost:3000
- Influence Campaign Tool: http://localhost:3333
Production Deployment
If you are deploying to production, using Cloudflare, you can use the included 'start-production.sh' script to set up a secure deployment with HTTPS. Ensure your domain and cloudflare settings are correctly configured in the root .env before running. More information on the required API tokens and settings can be found in the mkdocs/docs/build directory or at cmlite.org.
./start-production.sh
Documentation
Complete documentation is available in the MkDocs site, including:
- Service configuration guides
- Integration examples
- Workflow automation tutorials
- Map application setup and usage
- Troubleshooting guides
Visit http://localhost:4000 after starting services to access the full documentation.
Licensing
This project is licensed under the Apache License 2.0 - https://opensource.org/license/apache-2-0
AI Disclaimer
This project used AI tools to assist in its creation and large amounts of the boilerplate code was reviewed using AI. AI tools (although not activated or connected) are pre-installed in the Coder docker image. See docker.code-server for more details.
While these tools can help generate code and documentation, they may also introduce errors or inaccuracies. Users should review and test all content to ensure it meets their requirements and standards.
Troubleshooting
Permission Denied Errors (EACCES)
If you see errors like EACCES: permission denied when starting containers, run the included fix script:
./fix-permissions.sh
This fixes permissions on directories that containers need to write to, such as:
configs/code-server/.configand.local(Code Server)mkdocs/.cache(MkDocs social cards plugin)mkdocs/site(MkDocs built output)
If the script can't fix some directories (owned by a different container UID), it will prompt to use sudo.
Manual Permission Fix
If you prefer to fix manually:
# Fix all permissions at once
sudo chown -R $(id -u):$(id -g) .
chmod -R 755 .
# Or fix specific directories
chmod -R 777 configs/code-server/.config configs/code-server/.local
chmod -R 777 mkdocs/.cache mkdocs/site