Skip to content

Website for the students at Industrial Economics and Technology Management, NTNU Trondheim.

License

Notifications You must be signed in to change notification settings

einar-m/indok-web

 
 

Repository files navigation

Indøk NTNU


Logo

Table of Contents

Introduction

MIT License CI Code style code style: prettier codecov

Website for the students at Industrial Economics and Technology Management at NTNU Trondheim. Built with Django, Next.js, and a GraphQL API. Maintained by Rubberdøk NTNU.

Landing Page

Features

  • 🏔 Book the luxurious cabins Oksen and Bjørnen
  • 💸 Register for upcoming events and purchase tickets through Vipps
  • 🎉 Find and apply for the ideal student organization at Indøk
  • 🔒 Simple login through Feide
  • 📝 Easily navigate through the archive of Indøk documents

Feedback

Found a bug, got a suggestion, or something we should know about? Take a look at the roadmap and file an issue if it's not on the roadmap!

Setup

Installation

  1. Set up Git

  2. Install and start Docker Desktop

  3. Clone the project and build the Docker images

git clone https://github.com/rubberdok/indok-web.git
cd indok-web
docker compose build
  1. Run the project in Docker and set up the database
docker compose up
docker compose exec backend python manage.py loaddata initial_data

The last command creates some initial data, two test users, and one admin user:

Username Password Indøk
eva_student 5tgb true
asbjorn_elevg 1qaz false
admin admin123 super
  • Accessing the test users

    • Log in with Feide > Feide Test Users (under "Other login alternatives")

    • Enter the respective username and password.

  1. Install pre-commit hooks and Node dependencies locally for linting
    • If you already have yarn installed, skip to step 4.
    1. Install nvm by following the instructions
    2. Install Node 16
    nvm install 16
    nvm use 16
    1. Install yarn
    npm i -g yarn
    1. Install pre-commit hooks and dependencies locally
    cd frontend
    yarn
  2. Install Python dependencies locally for linting
    1. Install Python 3.9
    2. (Optional, but recommended) Create a virtual environment in the root folder indok-web
    python -m venv .venv
    source .venv/bin/activate
    1. Install Python dependencies locally
    pip install -r backend/requirements/local.txt

The frontend runs on http://localhost:3000, and the backend on http://localhost:8000. The GraphQL API endpoint is http://localhost:8000/graphql. The admin panel is available at http://localhost:8000/admin.

Secrets

Environment variables are automatically loaded, but secrets are not stored in the repository.

  1. Create .env and .env.local in backend/ and frontend/, respectively.
  2. Contact maintainers in order to get the necessary secrets, alternatively, if you're a member of Rubberdøk, check the #dev channel on Slack.
  3. Make sure to restart either container after making changes to .env*

Error logging

The project has error logging through Sentry, and can be accessed by authenticating with Github SSO.

Contributing

See CONTRIBUTING.

Deployment

The app is deployed through AWS ECS.

Other Services

  • E2E testing through Cypress, publicly accessible.
  • Code coverage through Codecov, accessible with Github SSO.
  • Domains managed through domene.shop.
  • Postmark as e-mail service, contact an administrator for access.
  • Vipps, contact an administrator for access.
  • Feide, contact an administrator for access.
  • AWS for various services, contact an administrator for access.
  • Google Workspace for account management, contact an administrator for access.
  • Slack for communication, available with a rubberdok.no domain.

Acknowledgements

Skraagen Logo created by Skraagen 🦆

indokntnu.no is powered by:

GraphQL   ReactJS   NextJS   TypeScript   Python   Django   Docker   AWS

About

Website for the students at Industrial Economics and Technology Management, NTNU Trondheim.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 55.0%
  • Python 42.2%
  • HTML 1.7%
  • Shell 0.7%
  • JavaScript 0.2%
  • Dockerfile 0.1%
  • CSS 0.1%