Development Setup
Scope: To be read by everyone who wants to change code, i.e., needs a development setup.
Operating Systems
- Ubuntu/Debian-based Linux system or
- Ubuntu/Debian in WSL on Windows
Ways to develop PermaplanT
Right now we have two different ways to develop PermaplanT:
Docker services + local development
Run the database and other services like adminer in Docker containers but run backend and frontend locally. Read more
Dev container
Run everything within the VSCode devcontainer. Read more
IDE
- Visual Studio Code for both Frontend and Backend
- IntelliJ IDEA for both Frontend and Backend
Visual Studio Code Extensions
Frontend
- Prettier ESLint for JavaScript/TypeScript linting and code formatting
Backend
Rust formatting can be achieved by adding the following to settings.json in VSCode after installing rust-analyzer:
"[rust]": {
"editor.defaultFormatter": "rust-lang.rust-analyzer",
"editor.formatOnSave": true
}
Browsers
- Chrome/Chromium 128.0.6613.137 or later
- Firefox 115.15.0esr (Extended Support Release) or late
Note: You cannot switch between different branches (like mr.permaplant.net, dev.permaplant.net) while using the same browser without resetting the cache as CORS preflights etc. get cached and cause weird errors.
Dependencies
If you want to install all necessary dependencies for development run the following command in project's root directory:
make install
Data
The easiest way is to import one of our dumps, see doc/database/import_dumps.md.
Alternatively, when you executed make install the scraper-data repository was cloned to scraper/data. Now you can execute make insert-scraper to insert these csv files into the database.
# Insert scraped data into the database
make insert-scraper
# Reset database will reinsert
make reset-database
Quick start
After installing dependencies, run make run-backend and make run-frontend in two different terminal windows and keep them open.
Run make help in the root directory to see all available make commands.
For more advanced backend or frontend setup, see