Skip to content

Architecture and Deployment

The project has a modular architecture and is fully containerized, making its deployment predictable and easily scalable.

🏗 Component Architecture

At its core, there are two main components working within a single Docker network and hidden behind a reverse proxy:

  1. Nginx Container (Web Server):
  2. Receives all incoming HTTP/HTTPS requests.
  3. Serves static files for the generated MkDocs documentation (under the /docs/ path).
  4. Forwards (Reverse Proxy) all other requests (home page, projects, contacts) to the Flask container.

  5. Flask Container (App Server):

  6. Processes dynamic routes and inserts the appropriate language into Jinja HTML templates.

🚀 CI/CD Process (GitHub Actions)

Site deployment is fully automated. With every push commit to the main branch, the following Pipeline is triggered:

  1. Checkout & Setup: GitHub Actions clones the repository and sets up the Python environment.
  2. Build Docs: Dependencies are installed (including i18n plugins), and the mkdocs build command is executed to generate the static documentation into the site/ folder.
  3. SCP Transfer: The fresh code and generated static files are copied to the Oracle Cloud server via SSH.
  4. Docker Compose Rebuild: The old cache is cleared on the server, and the docker-compose up -d --build command is executed. The containers are rebuilt with the new code with zero downtime.

💻 Local Run (For Development)

To deploy the project on a local machine, you just need to run two commands.

Build documentation (requires Python installed): ```bash pip install -r requirements.txt mkdocs build -f mkdocs-personal.yml