Skip to content

Commit dce9ecc

Browse files
committed
New dev container based backend dev docs
1 parent 176fc51 commit dce9ecc

File tree

2 files changed

+23
-97
lines changed

2 files changed

+23
-97
lines changed

docs/development/backend/setup.md

Lines changed: 22 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -1,111 +1,37 @@
1-
This page lists the steps required to start developing [Gramps Web API](https://github.com/gramps-project/gramps-web-api/). It will be assumed that you are using Ubuntu Linux.
1+
# Backend development setup
22

3-
### Python version
3+
This page lists the steps required to start developing [Gramps Web API](https://github.com/gramps-project/gramps-web-api/), the backend (server component) of Gramps Web.
44

5-
The Web API requires Python 3.7 or newer.
65

7-
### Install Gramps
6+
## Prerequisites
87

9-
The Web API requires the Gramps Python library to be importable. Starting from Gramps 5.2.0, it will be installable via `pip`. Right now, development is still based on Gramps 5.1.x, so the most convenient option is to install the Gramps `apt` package on Ubuntu
8+
The recommended development setup uses Visual Studio Code with devcontainers. This approach will create a preconfigured development environment with all the tools you need. To get started, you'll need the following ingredients:
109

11-
```
12-
sudo apt install gramps
13-
```
10+
- [Docker](https://docs.docker.com/get-docker/)
11+
- [Visual Studio Code](https://code.visualstudio.com/) with the [Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) installed
12+
- [Git](https://git-scm.com)
1413

15-
!!! info
16-
Note that using the `gramps` Python package from Gramps installed with `apt` requires using the system Python interpreter, so you cannot work in a virtual environment.
14+
You can use Linux, macOS, or Windows as your operating system.
1715

18-
### Clone the Web API repository
1916

20-
Clone the Web API to your PC (assuming you have set up an SSH key with Github) using
17+
## Getting started
2118

22-
```
23-
git clone [email protected]:gramps-project/gramps-web-api.git
24-
cd gramps-web-api
25-
```
19+
1. Open the [Gramps Web API repository](https://github.com/gramps-project/gramps-web-api) and click "fork"
20+
2. Clone your forked repository to your local machine using Git
21+
3. Open the cloned repository in Visual Studio Code. When prompted, select "Reopen in Container" or manually open the command palette (Ctrl+Shift+P or Cmd+Shift+P) and select "Dev Containers: Rebuild and Reopen in Container".
22+
4. Wait for the dev container to build and start. This may take a few minutes, especially the first time.
2623

2724

28-
### Install prerequisites
25+
## Tasks
2926

30-
To start development, please install the dependencies by running
31-
```
32-
pip3 install -r requirements-dev.txt
33-
```
27+
If you are only modifying the backend code, you do not necessarily need to spin up a web server - unit tests use a Flask test client that allow simulating requests to the API without needing a running server.
3428

35-
### Install the library in editable mode
29+
However, running a server is useful if you
3630

37-
Run
38-
```
39-
pip3 install -e . --user
40-
```
31+
- want to try out your changes with real HTTP requests (see [manual queries](queries.md)),
32+
- want to preview the impact of changes on the full Gramps Web application, or
33+
- also want to make simultaneous changes to the frontend (see [frontend development setup](../frontend/setup.md)).
4134

42-
### Set up pre-commit hooks
43-
44-
To set up the pre-commit hooks for the repository, run
45-
```
46-
pre-commit install
47-
```
48-
in the repository root. This will e.g. make sure that all source files are nicely formatted with `black`.
49-
50-
### Run tests
51-
52-
To run the unit tests, run
53-
```
54-
pytest
55-
```
56-
in the repository root.
57-
58-
### Generate a configuration file
59-
60-
Example content:
61-
62-
```python
63-
TREE="My Family Tree"
64-
SECRET_KEY="not_secure_enough"
65-
USER_DB_URI="sqlite:///users.sqlite"
66-
```
67-
68-
!!! warning
69-
Do not use this configuration in production.
70-
71-
See [Configuration](../../install_setup/configuration.md) for a full list of config options.
72-
73-
!!! warning
74-
Do not use your production database for development, but use a copy of it or the Gramps example database.
75-
76-
77-
### Add users
78-
79-
80-
You can add a user with owner permissions by running
81-
```
82-
python3 -m gramps_webapi --config path/to/config user add owner owner --role 4
83-
```
84-
This uses username and password `owner`.
85-
86-
87-
### Run the app in development mode
88-
89-
90-
Run
91-
```
92-
python3 -m gramps_webapi --config path/to/config run
93-
```
94-
The API will be accessible at `http://127.0.0.1:5000` by default, which displays an empty page. Access your Gramps data using the API described by [gramps-project.github.io/gramps-web-api](https://gramps-project.github.io/gramps-web-api/). For example, to show people go to `http://127.0.0.1:5000/api/people`
95-
96-
#### Options
97-
98-
To choose a different port, add the `--port PORT` option, where `PORT` is a number. The default port is `5000`.
99-
100-
To send the log data to a file, use `--log-file FILENAME`. The default is not to log to a file.
101-
102-
To set the log level (for console or file) use `--debug-level LEVEL` where LEVEL is `info`, `debug`, `warning`, or `critical`. The default is `info`.
103-
104-
If running the gramps-web-api server locally, the following additional flags may be useful:
105-
106-
* `--use-wsgi` - adds a WSGI wrapper to the application.
107-
* `--host IP` - the IP address to use for the WSGI listener. The default IP is `127.0.0.1`.
108-
* `--max-workers NUMBER` - for the WSGI server. Default is set dynamically based on the number of CPUs.
109-
* `--open-browser WHERE` - to open the browser on the default gramps-web-api page in a `tab` or a `window`. The default of `WHERE` is `no`, meaning to not open a browser tab or window.
110-
111-
To find out more about the options, use `--help`.
35+
Running the server is simplified in the dev container by predefined tasks. You can run these tasks from the command palette (Ctrl+Shift+P or Cmd+Shift+P) by selecting "Tasks: Run Task" and then choosing one of the following:
36+
- "Serve Web API" - starts the Flask development server on port 5555 with debug logging enabled
37+
- "Start Celery worker" - starts a Celery worker to process background tasks.

mkdocs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ nav:
5959
- Manual queries: development/backend/queries.md
6060
- Frontend:
6161
- Introduction: development/frontend/index.md
62-
- Architecture: development/frontend/architecture.md
6362
- Development setup: development/frontend/setup.md
63+
- Architecture: development/frontend/architecture.md
6464
- Translation: development/frontend/translation.md
6565
- Contribute: contribute/contribute.md
6666
- Get Help: help/help.md

0 commit comments

Comments
 (0)