Elastisched is an elastic scheduling system for time-constrained tasks and recurring events. It combines deterministic constraints with a C++ optimization engine, an API-first backend, and an interactive calendar UI.
- Flexible "blob"-based event model with schedulable windows and policy flags.
- Simulated-annealing scheduler with configurable cost weights and granularity.
- Recurrence system (
single,multiple,weekly,delta,date). - FastAPI backend with integrations and LLM-assisted scheduling flows.
- Vanilla JS frontend with day/week/month/year views and scheduling controls.
backend/: FastAPI app, persistence, routing, integrations, and LLM runtime.core/: Python scheduling domain primitives (blob, timerange, recurrence).engine/: C++ scheduler +pybind11Python bindings.frontend/: Browser UI served at/ui.learning/: Preference-learning and embedding scaffolding.
backend/README.mdcore/README.mddocs/README.mdelectron/README.mdengine/README.mdfrontend/README.mdlanding/README.mdlearning/README.mdmcp/README.mdtests/README.mdbin/README.md
cp .env.example .env- Fill
GOOGLE_OAUTH_CLIENT_IDandGOOGLE_OAUTH_CLIENT_SECRETin.envif you want Google Calendar integration. docker compose --env-file .env up --build- Open
http://localhost:8080(recommended) orhttp://localhost:8000/ui.
python3 -m venv .venvsource .venv/bin/activatepip install -r requirements.txtuvicorn backend.main:app --reload --host 0.0.0.0 --port 8000- Open
http://localhost:8000/ui
Common environment variables:
DATABASE_URL(default:sqlite+aiosqlite:///./core.db)ELASTISCHED_PROJECT_TZ(default:UTC)GEMINI_API_KEY,GEMINI_MODELGOOGLE_OAUTH_CLIENT_ID,GOOGLE_OAUTH_CLIENT_SECRET,GOOGLE_OAUTH_REDIRECT_URI,GOOGLE_OAUTH_SCOPES
Use .env.example as the template for local setup.
In Google Cloud Console for your OAuth client (Web application):
- Add authorized redirect URI(s):
http://localhost:8080/integrations/google/oauth/callbackhttp://localhost:8000/integrations/google/oauth/callback
- Add authorized JavaScript origin(s):
http://localhost:8080http://localhost:8000
- Keep
GOOGLE_OAUTH_REDIRECT_URIblank in.envto auto-detect from the URL you open.
- Python tests:
pytest -q - C++ engine tests:
cmake -S engine -B engine/build_tests -DELASTISCHED_BUILD_TESTS=ONcmake --build engine/build_testsctest --test-dir engine/build_tests --output-on-failure
MIT. See LICENSE.
