In order to have get started with developing hypha locally, you'll need these minimal setup, the setup may vary slightly for your base operating systems.
Make sure you have these things installed on your system:
- Git – Installation Guide
- Python 3.11.x
- Node 18.x
- PostgreSQL 14.x (with
Get Source Code¶
git to fetch the code, this will create a
Now, create some local directories.
NOTE: In production media is stored on AWS S3 but for local development you need a "media" directory. The
var/log is used to store local logs, if configured.
OBS! Everything from now on will happen inside the
Install project dependencies¶
Create and activate python virtual environment:
Install Python & Node packages:
Compile JS & SCSS¶
Build all JS/CSS assets for development:
Hypha uses NodeJS to compile SCSS and JS from the
hypha/static_src/ directory. See the
file for a complete list of commands.
Hypha supports configuration via either a
local.py or a
Create an empty
.env file at the root of the project:
.env file and add your config:
Copy the provided
local.py.example file and rename it to
Open and take a look at the
local.py, it already has some sensible defaults and you can use this to override all the settings.
Setup Database and Initial Data¶
Create an empty database:
Ensure database name
hypha is added to your
Let's create all the tables and schemas required by the project.
There are two ways to about it, you can either load demo data from
/public/sandbox_db.dump or start with empty tables.
To load demo data run:
It's not always completely up to date so run:
dropdbare not available you will need to add the Postgres bin directory to your
pathor call the commands with complete path.
- If you need to delete/drop the database, you can use
$ dropdb hypha
On Linux you might need to run as the "postgres" user first when setting up Postgres. Use it to create the database and set up a database user.For local development I suggest creating a user with the same name as your account, then you will not need to specify it on every command.
You will need two domain to run this app, used to serve the public and apply site on different domains
First, add these sites to the database:
Then, add this to your
Is it safe to use .test?
The ".test" TLD is safe to use, it's reserved for testing purposes. Feel free to use another name but then remember to use it in all the commands below.
Create Login credentials¶
Run Development Server¶
Alternatively, you can also use
$ make serve-django
Now you should be able to access the sites:
To live preview of documentation, while you writing it.
Activate your virtual environment and install dependencies:
Open http://localhost:9100/ to preview the documentation site.
You can use
$ make serve command to run Django Development Server, watch and compile frontend changes and preview docs all at once.
Hypha's coding style is enforced by black, ruff and prettier and comes pre-configured with prettier.
Install pre-commit to auto-format the code before each commit:
ruff and py.test test runner and uses
hypha/settings/testing.py for test settings.
For frontend code, stylelint and eslint is used.
Run the test with:
For lint the code and not run the full test suite you can use:
- The Apply dashboard: http://apply.hypha.test:9001/dashboard/
- The Apply Wagtail admin: http://apply.hypha.test:9001/admin/
- The Django Administration panel: http://apply.hypha.test:9001/django-admin/
Use the email address and password you set in the
createsuperuser step above to login.