Installation¶
Get Craft Easy up and running on your machine. Every package in the ecosystem can be installed independently, but most projects pull in craft-easy-api first and add the rest as needed.
Prerequisites¶
| Requirement | Version | Notes |
|---|---|---|
| Python | 3.12 | 3.13+ is not yet supported (Beanie/Pydantic compatibility). |
| MongoDB | 6.0+ | Use a replica set (directConnection=true for single-node dev) so that change streams and transactions work. |
| Node.js | 20+ | Only if you use the admin app. |
pip / venv |
bundled | Or any PEP 668-compatible installer (uv, pipx, poetry). |
Verify your environment:
python3.12 --version # Python 3.12.x
mongosh --eval "db.runCommand({ping:1})" --quiet
node --version # v20.x or higher
Install craft-easy-api¶
The API framework is the foundation. Install it into a project virtual environment:
During early development (pre-1.0) you can also install directly from GitHub:
Verify the install:
Install the standalone packages¶
These are optional — add them only if you need what they offer.
craft-easy-jobs (CLI job runner)¶
Use this for stateless batch jobs, cron tasks in Kubernetes CronJob or GitHub Actions, or ad-hoc manual runs. See craft-easy-jobs CLI for when to prefer it over the API's built-in jobs module.
craft-easy-file-import (file & reconciliation service)¶
This ships with bank-file parsers (BgMax, SEPA camt.054), generic parsers (CSV, JSON, FlatFile), and a poll-based runner that pushes to any Craft Easy API. It has an optional dependency on craft-easy-api — install both if you need SFTP or WatchedDirectory sources.
craft-easy-template (cookiecutter scaffolds)¶
The template itself is consumed via cookiecutter, not pip install. See Project Templates.
Install the admin app¶
The admin app is a React Native + Expo project that you run as a separate process. You can either install the npm package or clone the repo.
Option 1 — npm package¶
Option 2 — clone the repo¶
git clone https://github.com/easy-software-system/craft-easy-admin.git
cd craft-easy-admin
npm install
npm run web # Run in the browser
npm run ios # Run on iOS simulator
npm run android # Run on Android emulator
The admin app connects to any Craft Easy API by fetching its /admin/schema endpoint. Point it at your local API on http://localhost:5001 once the API is running.
MongoDB for development¶
The quickest way to run MongoDB locally is Docker with a single-node replica set:
docker run -d --name craft-easy-mongo -p 27017:27017 \
mongo:7 --replSet rs0
# Initialize the replica set (one-time)
docker exec -it craft-easy-mongo mongosh --eval 'rs.initiate()'
Connection string for your app:
Verify the install¶
Start a minimal API to confirm everything is wired up:
If you see that line printed, the framework is ready. Move on to the Quick Start to create your first resource.
Troubleshooting¶
| Symptom | Fix |
|---|---|
ImportError: cannot import name 'create_base_app' |
You installed an old version. Upgrade with pip install -U craft-easy-api. |
ServerSelectionTimeoutError on startup |
MongoDB is not running, or you forgot ?directConnection=true against a single-node replica set. |
TypeError from Pydantic |
You are on Python 3.13+. Downgrade to 3.12. |
ModuleNotFoundError: jwt |
Reinstall with pip install 'pyjwt[crypto]>=2.10' — the crypto extra is required for ES512. |