The SEED Platform is a web-based application that helps organizations easily manage data on the energy performance of large groups of buildings. Users can combine data from multiple sources, clean and validate it, and share the information with others. The software application provides an easy, flexible, and cost-effective method to improve the quality and availability of data to help demonstrate the economic and environmental benefits of energy efficiency, to implement programs, and to target investment activity.
The SEED application is written in Python/Django. The front end includes the
legacy AngularJS application and a newer Angular application in the
ng_seed/seed-angular submodule. The back-end database is PostgreSQL with
PostGIS; Docker development currently uses the repository's configured
TimescaleDB/Postgres image.
The SEED web application provides both a browser-based interface for users to
upload and manage their building data, as well as a full set of APIs that app
developers can use to access these same data management functions. From a
running server, the Swagger API documentation can be found at /api/swagger
or from the front end by clicking the API documentation link in the sidebar.
- Production on Amazon Web Service: See Installation Notes
- Development on macOS or Windows: Installation Notes
- Development using Docker: Installation Notes
For local development, initialize the Angular UI submodule before installing dependencies or building Docker images:
git submodule update --init ng_seed/seed-angularIn production the following two commands will run the web server (Hypercorn) and the background task manager (Celery) with:
bin/start_hypercorn.sh
bin/start_celery.shFor basic local development only, run Celery tasks eagerly in the Django process
by setting CELERY_TASK_ALWAYS_EAGER = True and
CELERY_TASK_EAGER_PROPAGATES = True in config/settings/local_untracked.py.
Then start Django with:
uv run manage.py runserverRun Django management commands through uv as uv run manage.py <command>.
Testing workflows that need real asynchronous behavior and production
deployments should run Celery as a separate worker/task. For that mode, set
CELERY_TASK_ALWAYS_EAGER = False and run the worker separately:
uv run celery -A seed worker -l INFO -c 4 --max-tasks-per-child 1000 -EBS django_celery_beat.schedulers:DatabaseSchedulerThe legacy AngularJS app is served at /app/. The newer Angular app is served
at /ng-app/ after its static assets have been built.
- Source code documentation is on the SEED website and there are links to [older versions][code-documentations-links] as needed.
- Several notes regarding Django and AngularJS integration: See Developer Resources
- Running tests: See Testing Notes
See the information in the LICENSE.md file.