2.7 KiB
2.7 KiB
Capitalism Eats the World
A simulation-based web application that models economic systems using Markov chains to demonstrate how wealth distribution evolves over time.
Overview
This project provides an interactive simulation of economic dynamics, particularly focusing on how wealth inequality can emerge and persist in market economies. The simulation uses Markov chain models to represent economic mobility and wealth accumulation patterns.
Features
- Interactive web interface for running economic simulations
- Real-time visualization of wealth distribution using Plotly and Matplotlib
- RESTful API endpoints for programmatic access
- WebSocket support for real-time updates during simulations
- Docker containerization for easy deployment
- SEO optimized with meta tags, robots.txt, and sitemap.xml
- Favicon based on the 📈 emoji for brand recognition
Prerequisites
- Docker and Docker Compose
- A domain name (for production deployment with SSL)
Quick Start
-
Clone the repository:
git clone https://gitea.elpatron.me/elpatron/capitalism-eats-the-world.git cd capitalism-eats-the-world
-
Build and run with Docker Compose:
docker-compose up --build
-
Access the application at
http://localhost:5000
Production Deployment with Caddy and Let's Encrypt
For production deployment with automatic SSL certificates, the project includes a Caddy configuration:
- Update the Caddyfile with your email address and domain for Let's Encrypt notifications
- Ensure your domain points to your server's IP address
- Run with Caddy:
docker-compose up -d
The application will be available at https://markov.example.com
with automatic SSL certificate management.
Documentation
- Docker Configuration - Docker setup and deployment
- Caddy Configuration - Caddy server setup with Let's Encrypt
- Nginx Configuration - Alternative Nginx setup (if applicable)
API Endpoints
GET /
- Main simulation interfacePOST /api/simulation
- Create a new simulationPOST /api/simulation/<id>/start
- Start a simulationPOST /api/simulation/<id>/stop
- Stop a simulationGET /api/simulation/<id>/data
- Get simulation dataGET /api/simulations
- List all simulations
WebSocket Events
simulation_progress
- Real-time updates during simulationsimulation_complete
- Notification when simulation finishessimulation_error
- Error notifications
Technology Stack
- Backend: Python, Flask, Flask-SocketIO
- Frontend: HTML, CSS, JavaScript
- Visualization: Plotly, Matplotlib
- Containerization: Docker, Docker Compose
- Reverse Proxy: Caddy (for SSL)