# Research Project Website

This repository contains the source code for the AM-D-Model project's public-facing website. The site serves as an info page, as well as an invitation to collaborators and portal to our other tools.

## Getting Started

### Prerequisites

This project uses `devenv.nix` to manage the development environment, which will handle all prerequisites automatically. Make sure you have `devenv` installed on your system. If you wish to avoid using devenv it should also work fine directly using bun, node, or deno, but i can't make any promises as i use devenv.

### Installation

1. Clone the repository:

```bash
git clone https://github.com/Cian-H/am-d-model.eu.git
cd am-d-model.eu
```

2. Start the development server:
    - via bun (recommended)
    ```bash
    bun install
    bun run dev
    ```
    - via node.js
    ```bash
    npm install
    npm run dev
    ```
    - via deno
    ```bash
    deno install --allow-scripts=npm:svelte-preprocess,npm:@parcel/watcher
    deno run dev
    ```
    - via docker
    ```bash
    docker build --tag am-d-model-site:latest .
    docker run -p 3000:3000 am-d-model-site
    ```

The site will be available at `http://localhost:3000`

### Other Commands

- `bun preview`: Run a preview of the production build
- `bun build`: Build the site for production
- `docker compose up`: Deploys a docker composition including a caddy reverse proxy, ready to be deployed to web infrastructure
- `just deploy`: Deploys a full docker composition and initialises databases, for first deployment of site

## Deployment

For simplicity, deployment is manually triggered via justfiles. More complex solutions may be
implemented in future but for now, simplicity is a virtue.

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Acknowledgements

Thanks to the extremely friendly community of the inveniosoftware discord, and in particular
Martin Fenner and his [alternative invenio deployment](https://github.com/front-matter/invenio-rdm-starter/tree/main) using gunicorn and caddy.
Trying to get this to work via the traditional uwsgi and nginx was a nightmare; one he had
apparently already discovered and worked around.
