https://github.com/vektorprogrammet/api
https://github.com/vektorprogrammet/api
rest-api typescript
Last synced: 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/vektorprogrammet/api
- Owner: vektorprogrammet
- Created: 2024-08-30T07:25:00.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-11-10T17:48:28.000Z (5 months ago)
- Last Synced: 2025-11-10T19:11:38.868Z (5 months ago)
- Topics: rest-api, typescript
- Language: TypeScript
- Size: 388 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Vektorprogrammets API
Kildekoden er på engelsk.
## Innholdsfortegnelse
- [Vektorprogrammets API](#vektorprogrammets-api)
- [Innholdsfortegnelse](#innholdsfortegnelse)
- [Mappestruktur](#mappestruktur)
- [Oppsett](#oppsett)
- [Med lokal database](#med-lokal-database)
- [Med dev-database på digital ocean](#med-dev-database-på-digital-ocean)
- [Recommended Extensions](#recommended-extensions)
- [Imports Autocomplete](#imports-autocomplete)
- [Formatting and Linting](#formatting-and-linting)
- [Configure format on save in VSCode](#configure-format-on-save-in-vscode)
- [Pretty TypeScript Errors](#pretty-typescript-errors)
- [Scripts](#scripts)
- [Development](#development)
- [Linting and formatting](#linting-and-formatting)
- [Production](#production)
- [Database](#database)
- [Info](#info)
## Mappestruktur
Kildekoden er på engelsk
For at testene skal fungere, bruk node version >=22
- `/`
- `db/` database modul
- `lib/` generell delt kode
- `src/` serverkode (CORE og API samlet)
## Oppsett
Start med å kjøre
```sh
pnpm install
```
og pass på at du har fått installert alle avhengighetene riktig.
Deretter lag en `.env`-fil for å lage egne miljøvariabler.
Start med å sette:
```.env
PORT=*porten du vil kjøre apien fra, f.eks. 8080*
HOSTING_URL=*urlen du kjører apiet fra, f.eks. localhost*
```
Deretter må du sette opp databasetilkoblingene.
Nå legger du inn databasetilkoblingsinnstillingene som miljøvariabler, anbefaler å bruke en `.env` fil.
Du må legge inn alle disse innstillingene:
```.env
DATABASE_HOST=*f.eks. localhost*
DATABASE_PORT=*f.eks. 5432*
DATABASE_NAME=*f.eks. vektorpostgres*
DATABASE_USER=*f.eks. postgres*
DATABASE_PASSWORD=*f.eks. pass123*
```
Eventuelt kan du sette:
```.env
LOG_DATABASE_CREDENTIALS_ON_STARTUP=true
```
for å sjekke at tilkoblingsinstillingene til databasen ser bra ut når du kjører appen.
### Med lokal database
Kjør:
[`docker compose up` scriptet](#database)
og databasen burde være oppe og gå med en gang.
I `.env` sett
```.env
DATABASE_SSL_OPTION=false
```
fordi lokale databaser ikke tillater ssl-tilkoblinger.
### Med dev-database på digital ocean
Du finner tilkoblingsinnstillingene på digital ocean.
Siden databasen fortsatt er i utvilking og vi ikke har skaffet et CA-sertifikat til den enda, må du sette:
```.env
DATABASE_SSL_OPTION=dev
```
Eventuelt **kan** du kopiere CA-serifikatet til databasen fra digital ocean og sette dette i en miljøvariabel, men dette er unødvendig under utvilking.
Om du uansett vil prøve må du sette:
```.env
DATABASE_SSL_OPTION=prod-provide_ca_cert
```
og
```.env
CA_CERT=*CA-sertifikatet*
```
i `.env`.
For å kjøre appen og migrere databasen, se [scripts](#database).
## Recommended Extensions
### Imports Autocomplete
[`christian-kohler.npm-intellisense`]()
### Formatting and Linting
[`biomejs.biome`](https://marketplace.visualstudio.com/items?itemName=biomejs.biome)
#### Configure format on save in VSCode
Paste the following into `.vscode/settings.json`
```json
{
"editor.formatOnSave": true,
"[typescript]": {
"editor.defaultFormatter": "biomejs.biome"
}
}
```
### Pretty TypeScript Errors
[`YoavBls.pretty-ts-errors`](https://marketplace.visualstudio.com/items?itemName=yoavbls.pretty-ts-errors)
## Scripts
### Development
Run server
```sh
pnpm dev:once
```
Run server, watch for changes:
```sh
pnpm dev
```
Run tests in `/src/tests`:
```sh
pnpm test
```
### Linting and formatting
Format files, safe fixes applied:
```sh
pnpm format
```
Lint files in, safe fixes applied:
```sh
pnpm lint
```
Format and lint files, safe fixes applied:
```sh
pnpm check
```
### Production
Build into `/build`:
```sh
pnpm build
```
Run the built javascript in `/build`:
```sh
pnpm start
```
Build, then start:
```sh
pnpm prod
```
### Database
Start a postgres database in a docker container:
```sh
docker compose up
```
Generate migration files to `/db/migrations`:
```sh
pnpm db:generate
```
Migrate the database with the generated migrationfiles in `/db/migrations`:
```sh
pnpm db:migrate
```
Open the database in the drizzle studio interface:
```sh
pnpm db:studio
```
Seed the database with random, but deterministic values:
```sh
pnpm db:seed
```
## Info
Tabellnavn er i *flertall* (users > user)