From 57d8c4321fa59e5b38a1972ac888b3f326d9e643 Mon Sep 17 00:00:00 2001 From: Ojakoo Date: Wed, 21 Dec 2022 16:20:59 +0200 Subject: [PATCH] Update readme. --- .env.dev | 6 ++-- README.md | 84 ++++++++++++++++++++++++++++++------------------------- 2 files changed, 50 insertions(+), 40 deletions(-) diff --git a/.env.dev b/.env.dev index df39dd4..5974cde 100644 --- a/.env.dev +++ b/.env.dev @@ -1,11 +1,13 @@ DEPLOY_ENV=local SENTRY_DSN= -HOST=api.dev.sahkoinsinoorikilta.fi +HOST=localhost DEBUG=True SECRET_KEY=7p$85^4ibb^p4-=vs44b7!y0e-zemugze18@a#30&71=a8)dp( DB_NAME=postgres DB_USER=postgres DB_PASSWD=postgres -DB_HOST=db +DB_HOST=localhost DB_PORT=5432 EMAIL_API_KEY= +GROUP_KEY= +GOOGLE_CREDS='{}' diff --git a/README.md b/README.md index 2394ee9..c758af0 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,13 @@ -# SIKWEB 2.0 +# Web 2.0 Backend -A modern web app using a Django backend and an Angular frontend. +[Django](https://www.djangoproject.com/) backend containing multiple small applications and api for Next.js frontend. -## Components - -### Infoscreen - -Angular-based slideshow app for the guild room's screens. - -### Member register - -Data table app for viewing and modifying the member register, member applications and membership payments. - -### Web app - -Mostly static website with an event calendar and news feed. - -## Accessing the source - -### Clone this repository and enter it +* **Web app:** Backend for the main website. +* **Member register:** Data table app for viewing and modifying the member register, member applications and membership payments. +* **Kaehmy:** Form for creating and listing kaehmys +* **Ohlhafv:** Form for creating and listing ohlhafv challenges. +* **Infoscreen:** Angular-based slideshow app for the guild room's screens. +## Installation Set up your SSH key authentication in GitLab Profile Settings. Then clone the repository and checkout the development branch: @@ -28,12 +17,17 @@ cd web2.0-backend git checkout develop ``` -## Development +Copy env file for local use: +```bash +cp .env.dev .env +``` ### Poetry For depedencies and virtual environment, we use [poetry](https://python-poetry.org/). +First install [python](https://wiki.python.org/moin/BeginnersGuide/Download). Then install poetry: + ```bash python3 -m pip install poetry ``` @@ -44,9 +38,26 @@ The easiest integration with VSCode is to have poetry install virtual environmen python3 -m poetry config virtualenvs.in-project true ``` -Start developing by install dependencies first +### Node -#### CMDs +We use Node.js for few development tasks, like linting. Easiest way to install Node is [nvm](https://github.com/nvm-sh/nvm). After installing install dependencies: + +``` +npm install +``` + +TODO: List scripts + +### Database + +To run a local development database **[docker](https://docs.docker.com/engine/install/)** is recommended. If you want to additianally use a db management tool **[pgAdmin](https://www.pgadmin.org/download/)** is nice. + +After installing docker use the following to create a database: +```bash +docker run --name postgres:12 -e POSTGRES_PASSWORD=postgres -p 5432:5432 -d postgres:12 +``` + +## Development Activate virtual environment in shell @@ -60,20 +71,15 @@ Install dependencies poetry install ``` -### npm scripts - -We use Node.js for few development tasks, like linting. Easiest way to install Node is [nvm](https://github.com/nvm-sh/nvm). - -TODO: List scripts - ### Initializing data -Run the following `manage.py` commands. Do not run these in production without thinking! +Run the following `manage.py` commands to initialize a new database. Do not run these in production without thinking! ```bash -python manage.py createdefaultadmin # creates an admin user -python manage.py initialize # creates user groups -python manage.py createdummydata # creates dummy members to the member register +python manage.py migrate # run migrations +python manage.py createdefaultadmin # creates an admin user +python manage.py initialize # creates user groups +python manage.py createdummydata # creates dummy members to the member register ``` ### Running @@ -82,8 +88,6 @@ python manage.py createdummydata # creates dummy members to the member regis python manage.py runserver ``` -#### Visit the page - Visit [https://localhost:8000](https://localhost:8000) in your browser! Using address `0.0.0.0` will bind to all IP addresses. Using `localhost` will only bind to your machine. @@ -99,7 +103,7 @@ When you start working on a feature, create a feature branch for your changes. T Example of creating a feature branch: ```bash -git checkout -b feature-error-page +git checkout -b feature-branch-name ``` When your changes are ready and the code works without errors, submit a merge request to `develop` in GitLab. Another developer reviews your changes and runs the merge. Feature branches should be closed on merge. @@ -110,16 +114,18 @@ Merge requests to `master` should be reviewed by multiple developers. Only a mod ### Linting -Lint python files using `pycodestyle` with +Lint python files using `black` with ```bash -pycodestyle --config=pycodestyle.cfg --count . +npm run lint:py # check changes +npm run lint:py:fix # fix errors ``` Lint javascript and markdown using `eslint` and `remark` with ```bash -npm test +npm run lint:md # markdown +npm run lint:js # javascript ``` Use an editor with linting capabilities to write pretty code that passes linting. Examples include _VSCode_, _Atom_ and _Pycharm_. @@ -140,6 +146,8 @@ Tests are located in `tests.py` under every subproject. Project is run in production with Docker. See `Dockerfile` for details. +For more information about deployment check **[infra](https://gitlab.com/sahkoinsinoorikilta/vtmk/infra)** repository. + ## GitLab CI All pushed changes go through the GitLab Continuous Integration, which consists of automated unit testing and linting. Make sure your changes pass both before merging to `develop` or `master`.