# www.0_timeline.org This repository contains the source code and deployment configuration for the [0_timeline.org](https://0_timeline.org) website. ## 📍 Objective (What It Is) **0_timeline.org** is a public-facing static website that serves as the primary transparency layer for the Smartup Zero project. It automatically mirrors the content of this Forgejo repository and serves three main purposes: - **Transparency Layer**: Showing the world what Smartup Zero is building (ONLIFE), who's involved, and the current state of progress. - **Official Smartup Business Plan (OSBP)**: Publishing the "why" and "what" of the project, derived from our community decisions. - **Recruitment Portal**: Displaying our team structure, open roles, and the process for joining the project. ### Sitemap ```yaml nav: - Home: index.md - The Observation: 0_timeline/the-observation.md - The Hypothesis: 0_timeline/the-smartup-hypothesis.md - The Experiment: 0_timeline/the-experiment.md - Project History: 0_timeline/history.md - '---': '' - 'Smartup Zero: The First Smartup - Building ONLIFE': - '1. Our General Forum': smartup-zero/1_general_forum.md - '2. Our Workplace': smartup-zero/2_workplace.md - '3. Our Teams': smartup-zero/3_teams.md - '4. Our Roles': smartup-zero/4_roles.md - '5. Our Objectives': smartup-zero/5_objectives.md - '6. Our Tasks': smartup-zero/6_tasks.md ## 🔧 Deployment Pipeline (How It Works) This project is automatically deployed to **Clever Cloud** on every push to the `master` branch. The process leverages Clever Cloud's **Python App Hosting** to achieve a fully automated build and deployment pipeline. The end-to-end flow is as follows: 1. **Push to Forgejo**: A developer pushes new commits to the `master` branch of this repository. 2. **Webhook Trigger**: Clever Cloud detects the new commit and starts a new deployment instance. 3. **Dependency Installation**: The server installs all Python packages listed in `requirements.txt`. This includes `mkdocs` and its plugins, the `gunicorn` web server, and the `setuptools` build tool. 4. **Custom Build Step**: Clever Cloud executes the goal defined in the `PYTHON_SETUP_PY_GOAL` environment variable (`mkdocs`). - This triggers our custom `setup.py` script. - The script runs the command `mkdocs build`, which compiles all Markdown from the `docs/` directory into a static HTML site in a new `site/` directory. 5. **Application Start**: After the build is complete, Clever Cloud starts the application server. - It uses `gunicorn` as the backend, as defined by the `CC_PYTHON_BACKEND` variable. - Gunicorn is instructed to run the WSGI application found in `server.py` (via the `CC_PYTHON_MODULE` variable). 6. **Serving Files**: The Python script `server.py` uses the **WhiteNoise** library to efficiently serve the static files from the `site/` directory that was just created. The site is now live. ## 🛠️ Key Files & Configuration This setup relies on a few key files to work correctly: - `mkdocs.yml`: Standard configuration for the MkDocs site generator. Defines site structure, navigation, and theme. - `docs/`: Contains all the raw Markdown content for the website. This is the primary folder for content editors. - `requirements.txt`: Lists all Python dependencies. Crucially, it includes: - **Site generator plugins** (`mkdocs`, `mkdocs-material`, etc.). - **The build tool** (`setuptools`) needed to run our custom build script. - **The serving tools** (`gunicorn`, `whitenoise`) needed to run the live web server. - `setup.py`: A standard Python build script that we use as a build hook. It defines a custom command (`mkdocs`) that runs the `mkdocs build` process. - `server.py`: A minimal Python web application. Its only job is to use the WhiteNoise library to serve the static files generated by MkDocs. This script provides the **WSGI-compatible application** that Clever Cloud's Python hosting requires. ## 🎯 Rationale (Why This Setup?) The deployment configuration for this project may seem complex for a static site. This specific approach was chosen to overcome limitations of the Clever Cloud platform. #### Why not use a standard "Static Site" deployment? > Clever Cloud's static site buildpack automatically detects MkDocs and tries to run `mkdocs build`. However, it **does not** install dependencies from `requirements.txt` first. This causes the build to fail if you use any custom themes or plugins (like `mkdocs-material`). #### Why not just run `python -m http.server` in a Python app? > The standard Python hosting on Clever Cloud is designed for production use and expects a robust **WSGI** server (like Gunicorn or uWSGI). It will not run a simple development server like `http.server`. Our current solution is the ideal middle ground: **It uses the Python App environment, which gives us full control to install all our dependencies, while the `server.py` script provides the simple-but-necessary WSGI interface that the platform requires.** ## ✍️ How to Contribute 1. Clone this repository. 2. Create and activate a Python virtual environment: ```bash python -m venv venv source venv/bin/activate ``` 3. Install all dependencies: ```bash pip install -r requirements.txt ``` 4. To preview your changes locally, run the MkDocs development server: ```bash mkdocs serve ``` 5. Open your browser to `http://127.0.0.1:8000` to see the live-reloading site. 6. Make your changes to the Markdown files in the `docs/` directory. 7. Once you are happy with your changes, commit them and push to the `master` branch. The deployment process is fully automatic from there.