Skip to content

Commit

Permalink
Update readme (#4)
Browse files Browse the repository at this point in the history
  • Loading branch information
john-sonz authored Apr 1, 2022
1 parent 4a4ecea commit 3607707
Showing 1 changed file with 45 additions and 10 deletions.
55 changes: 45 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,21 @@ IT-GOATS

## Struktura

| Codebase | Opis |
| :-------------------- | :-----------------------: |
| [bode](bode) | Flask API |
| [cabra](cabra) | React Frontend |
| Codebase | Opis |
| :------------- | :------------: |
| [bode](bode) | Flask API |
| [cabra](cabra) | React Frontend |

## Uruchomienie projektu

### Wymagania (zalecane):

- [Docker](https://docs.docker.com/get-docker/) + [docker-compose](https://docs.docker.com/compose/) dla Linux'a lub [Docker Desktop](https://docs.docker.com/get-docker/) dla OSX/Windows'a
- [WSL2](https://docs.microsoft.com/en-us/windows/wsl/install) w przypadku Windows'a
- [asdf](https://github.com/asdf-vm/asdf)

### Wymagania (alternatywne i niezalecane):

- [PostgreSQL](https://www.postgresql.org/) w rozsądnej wersji
- [Node.js + npm](https://nodejs.org/en/) najlepiej w wersji 16.14.12
- [Poetry](https://python-poetry.org/) najlepiej w wersji 1.1.13
Expand All @@ -28,46 +30,55 @@ Do pracy nad projektem najlepiej wykorzystać UNIX'owe środowisko.
OSX, jakiś Linux lub WSL2 pod Windows'em sprawdzą się w sam raz. W takim środowisku potrzebujemy mieć Docker'a z Compose'em (patrz linki w wymaganiach) oraz [asdf'a](https://asdf-vm.com/guide/getting-started.html).

Mając gotowe te dwie rzeczy, sklonowane repo (w przypadku WSL'a repo klonujemy do niego zamiast do Windowsa) i trochę szczęścia projekt powinien wstać po odpaleniu [skryptu](setup.sh):

```
$ ./setup.sh
```

Skrypt po kolei:

- zainstaluje potrzebne narzędzia przez asdf'a
- doda do gita hooki sprawdzające kod przed każdym commit'em (gdy będziemy mieć wybór, które hooki zainstalować to wybieramy spacją tylko `pre-commit` i potwierdzamy)
- zainstaluje potrzebne zależności w bode i cabrze
- uruchomi kontenery z bazą danych, backend'em i frontend'em

Po tym wszystkim aplikacja będzie dostępna po adresem http://localhost:3000.
Po tym wszystkim aplikacja będzie dostępna po adresem http://localhost:3000. API jest dostępne pod adresem http://localhost:4000/api/v1.

Setup wystarczy wykonać pomyślnie tylko raz, potem aplikację stawiamy:

- na Linuxie

```
docker-compose up
```

- na Macu/WSL:

```
docker compose up
```

### Alternatywna i niezalecana instrukcja:

Można spróbować uruchomić projekt bez Docker'a i/lub asdf'a. Wtedy trzeba samemu zapewnić, że wszystkie wymagane narzędzia są zainstalowane i serwer PostgreSQL jest uruchomiony. Następnie należy uruchamiać kolejne kroki z [setup.sh](setup.sh) pomijając ostatni oraz ręcznie ustawić w powłoce zmienne środowiskowe z pliku [.env.example](.env.example).
Można spróbować uruchomić projekt bez Docker'a i/lub asdf'a. Wtedy trzeba samemu zapewnić, że wszystkie wymagane narzędzia są zainstalowane i serwer PostgreSQL jest uruchomiony. Następnie należy uruchamiać kolejne kroki z [setup.sh](setup.sh) pomijając ostatni oraz ręcznie ustawić w powłoce zmienne środowiskowe z pliku [.env.example](.env.example).

Po tym wszystkim uruchamiamy w jednym terminalu bode:

```
cd bode && poetry run flask run --port=$FLASK_PORT
```

A w drugim cabrę:

```
cd cabra && npm run dev
```

W tym przypadku aplikacja też będzie dostępna po adresem http://localhost:3000.

### Możliwe problemy
Jeśli w trakcie instalacji zależności przez poetry pojawi się błąd dotyczący `psycopg2` to konieczne może być doinstalowanie odpowiednich pakietów zgodnie ze [stackiem](https://stackoverflow.com/questions/11618898/pg-config-executable-not-found).

Jeśli w trakcie instalacji zależności przez poetry pojawi się błąd dotyczący `psycopg2` to konieczne może być doinstalowanie odpowiednich pakietów zgodnie ze [stackiem](https://stackoverflow.com/questions/11618898/pg-config-executable-not-found).

## Przygotowanie VS Code

Expand All @@ -79,10 +90,10 @@ VS Code lepiej działa mając dodane foldery z poszczególnymi częściami aplik

### Interpreter pythona

VS Code będzie chciał żeby podać mu ścieżkę do używanego przez interpretera pythona. Wtedy wskazujemy ten w katalogu `bode/.venv`.

VS Code będzie chciał żeby podać mu ścieżkę do używanego przez nas interpretera pythona. Wtedy wskazujemy ten w katalogu `bode/.venv`.

### Lista fajnych i przydatnych dla naszego projektu dodatków:

- Frontend/React/Tailwind
- [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) **MUST HAVE**
- [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) **MUST HAVE**
Expand All @@ -95,9 +106,33 @@ VS Code będzie chciał żeby podać mu ścieżkę do używanego przez interpret
- [Pylance](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance) **MUST HAVE**
- DevOps
- [Docker](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker)
- [Remote - Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)
- [Remote - Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)
- [Remote - WSL](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl) **MUST HAVE** przy WSL
- Inne
- [Git Graph](https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph) - ładnie pokazuje drzewo gita
- [Git Lens](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens) - można łatwo wyklikiwać rzeczy związane z gitem
- [indent-rainbow](https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow) - koloruje wcięcia

## Materiały dotyczące używanych technologii i bibliotek

### Dostęp do bazy danych

- ORM
- [SQLAlchemy](https://docs.sqlalchemy.org/en/14/)
- [Flask-SQLAlchemy](https://flask-sqlalchemy.palletsprojects.com/en/2.x/)
- Migracje
- [Flask-Migrate](https://flask-migrate.readthedocs.io/en/latest/)
- [Alembic](https://alembic.sqlalchemy.org/en/latest/)

### REST API

- [flask-smorest](https://flask-smorest.readthedocs.io/en/latest/)
- [marshmallow](https://marshmallow.readthedocs.io/en/stable/)

### Frontend

- [React](https://beta.reactjs.org/)
- [Typescript](https://www.typescriptlang.org/)
- [Tailwind CSS](https://tailwindcss.com/)
- [react-query](https://react-query.tanstack.com/)
- [react-hook-form](https://react-hook-form.com/)

0 comments on commit 3607707

Please sign in to comment.