Skip to content
vektorprogrammetPublic

About

No description or website provided.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Repository files navigation

Vektorprogrammets API

Kildekoden er på engelsk.

Innholdsfortegnelse

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

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:

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:

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:

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

og databasen burde være oppe og gå med en gang. I .env sett

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:

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:

DATABASE_SSL_OPTION=prod-provide_ca_cert

og

CA_CERT=*CA-sertifikatet*

i .env.

For å kjøre appen og migrere databasen, se scripts.

Email setup

The API sends email through Gmail using OAuth 2.0. Add the following values to your .env file:

GOOGLE_FROM_EMAIL=vektorbot@vektorprogrammet.no
GOOGLE_CLIENT_ID=*Google OAuth client ID*
GOOGLE_CLIENT_SECRET=*Google OAuth client secret*
GOOGLE_REFRESH_TOKEN=*OAuth refresh token for the sender account*

GOOGLE_FROM_EMAIL is the email address used as the sender. GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET identify the OAuth client, and GOOGLE_REFRESH_TOKEN lets the API obtain access to Gmail without storing the account password. All four values are required for the API to start. Keep the client secret and refresh token private, and do not commit them to the repository.

Recommended Extensions

Imports Autocomplete

christian-kohler.npm-intellisense

Formatting and Linting

biomejs.biome

Configure format on save in VSCode

Paste the following into .vscode/settings.json

{
  "editor.formatOnSave": true,
  "[typescript]": {
    "editor.defaultFormatter": "biomejs.biome"
  }
}

Pretty TypeScript Errors

YoavBls.pretty-ts-errors

Scripts

Development

Run server

pnpm dev:once

Run server, watch for changes:

pnpm dev

Run tests in /src/tests:

pnpm test

Linting and formatting

Format files, safe fixes applied:

pnpm format

Lint files in, safe fixes applied:

pnpm lint

Format and lint files, safe fixes applied:

pnpm check

Production

Build into /build:

pnpm build

Run the built javascript in /build:

pnpm start

Build, then start:

pnpm prod

Database

Start a postgres database in a docker container:

docker compose up

Generate migration files to /db/migrations:

pnpm db:generate

Migrate the database with the generated migrationfiles in /db/migrations:

pnpm db:migrate

Open the database in the drizzle studio interface:

pnpm db:studio

Seed the database with random, but deterministic values:

pnpm db:seed

Info

Tabellnavn er i flertall (users > user)

About

No description or website provided.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages