This is the new website of TheAlternative, available at https://thealternative.ethz.ch.

[[_TOC_]]

## For Board Members

All content of the webpage is found in the `content/` folder. Specifically, the following files exist:

- `about.json`: This json file contains everyting in the "About Us" Section (except board members).
- `board.json`: This json file contains everything for the board listing.

<div class="panel panel-info">
**IMPORTANT**
{: .panel-heading}
<div class="panel-body">
All images referenced in `board.json` will have to be saved to `public/images`. Else, the website will display the theAlt logo instead.
</div>
</div>

- `eventTemplates.json`: When creating an Event, it is possible to select a template (e.g. descriptions, start/end time, place, etc.). These templates are stored in this file.
- `philosophy.json`: This file contains everyting in the definitions section at the bottom.
- `texts.json`: This file is the text in the main header.

## Local Setup

### Database

Make sure that a mariadb / mysql databsae is running and a database for the website exists.

Next, create a file `.env` with the following content and replace all content in `[]`:

```
SIP_AUTH_WEBSITE_CLIENT_ID=[VSETH Keycloak Client ID]
SIP_AUTH_WEBSITE_CLIENT_SECRET=[VSETH Keycloak Client Secret]
SIP_AUTH_OIDC_ISSUER=[VSETH Keycloak Issuer]

NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=sup3rs3cr3t

NEXT_PUBLIC_API_URL=http://localhost:3000
NEXT_PUBLIC_DEPLOYMENT=local

MAILER_HOST=[smpt.XXX.YYY]
MAILER_NAME=[Maxime Musterfrau]
MAILER_USERNAME=[maxmu@XXX.YYY]
MAILER_PASSWORD=[sup3rsecr3t]

DATABASE_URL="mysql://[username]:[password]@[host]:3306/[dbname]?schema=public"
```

Now, make sure that you're running Node.js 18 or later. One way to do this is via [nvm](https://github.com/nvm-sh/nvm):

```
nvm install 18
nvm use 18
```

Next, install all JavaScript dependencies with

```
npm install
```

Last, run the database migration with

```
npx prisma migrate dev
```

and run the local webserver

```
npm run dev
```

## Deployment

## Architecture

### Authentication / Authorization

### Translation

###