Project Overview

The Evercycle API project is a Python-based middleware layer that provides both a command-line interface (CLI) and a RESTful HTTP server for interacting with the Evercycle backend API (https://api.evercycle.io).

Project Structure

/opt/evercycle-api/
├── evercycle-api/          # Markdown API specs & auth config
│   ├── *.md                # Endpoint documentation files
│   ├── auth.properties     # Saved access/id/refresh tokens
│   └── config/             # Generated JSON configs per endpoint
├── src/                    # Shared library code
│   ├── api_client.py       # Generic HTTP API client (requests)
│   ├── api_runner.py       # Config generator & batch runner
│   ├── evercycle_api.py    # Thin CLI wrapper for Evercycle
│   └── evercycle_api_runner.py  # Interactive TUI menu runner
├── verae-api/              # Flask REST server
│   ├── api_server.py       # Main Flask application
│   ├── test_api_server.py  # HTTP integration tests
│   ├── test_create_api.py  # Create-asset endpoint test
│   └── requirements.txt    # Python dependencies
├── Dockerfile
├── docker-compose.yml
└── README.md

Key Technologies

  • Python 3.12

  • Flask 2.3.3 — HTTP REST server

  • Flask-CORS 4.0.0 — Cross-origin request handling

  • Requests 2.31.0 — HTTP client library

Deployment

The Flask server is deployed as a systemd service inside Proxmox CT 400 (evercycle-api, IP 10.1.10.173). Caddy on the host reverse-proxies api.veraetime.net to CT 400 port 5000.