Find events, guests and friends: maev.si.
This project is deployed within the maevsi_stack in accordance with the DargStack template to make deployment a breeze.
The setup for frontend development is easy! 💅
The setup for backend development is more complex as it consists of numerous services which are best set up containerized 🧑💻
click here for instructions
- (optional) if you're on Windows, you might want to setup WSL to be able to use all Linux functionality this project utilizes
- install Git to download this project's modules and participate in version management
- install nvm to be able to switch the currently active Node.js version on your machine (useful when working on multiple Node.js projects)
-
create a directory named
maevsi
in a directory of your liking -
download this repository into that newly created directory:
cd maevsi git clone https://github.com/maevsi/maevsi.git
-
switch into the
maevsi
subdirectory and setup Node:cd maevsi nvm install nvm use
-
then install all dependencies using pnpm, which should include the nuxt directory automatically:
corepack enable pnpm install
-
finally, start the frontend:
cd nuxt pnpm dev
-
you should now be able to access maevsi under http://localhost:3000/! 🎉
click here for instructions
- if you're on Windows, setup WSL to be able to use all Linux functionality this project utilizes
- install Git to download this project's modules and participate in version management
- install nvm to be able to switch the currently active Node.js version on your machine
- install mkcert for development certificate generation and installation, so that all services are available through https
- install Docker so that all services run in their containers
- install dargstack to bootstrap a Docker stack setup
-
create a directory named
maevsi
in a directory of your liking -
download the project modules maevsi, maevsi_stack and stomper into that newly created directory:
cd maevsi git clone https://github.com/maevsi/maevsi.git git clone https://github.com/maevsi/maevsi_stack.git git clone https://github.com/maevsi/stomper.git
maevsi contains the frontend and database migrations, maevsi_stack is the service configuration and stomper is the service that sends out emails.
-
switch into the
maevsi
subdirectory and setup Node:cd maevsi nvm install nvm use
-
then install all dependencies using pnpm, including the nuxt directory:
corepack enable pnpm install
-
configure maevsi's DargStack then:
cd ../maevsi_stack/src/development cp stack.env.template stack.env pnpm store path $EDITOR stack.env # fill PNPM_STORE_DIR with what's printed by the previous command
-
install a root development certificate on your system and create subcertificates for the application:
mkcert -install ./certificates/mkcert.sh
-
you are now ready to start everything up:
cd ../../ dargstack deploy
-
finally, create the Docker development images for
maevsi
andstomper
so that their services start successfully:dargstack build maevsi dargstack build stomper
-
you should now be able to access maevsi under https://localhost! 🎉
If there are issues, you can debug the services as described in the following "Container Management" section.
To see if services are running or not you can use Portainer if you prefer a web view instead of the command line:
sudo docker run --name portainer --restart=always -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
Access Portainer on http://localhost:9000
then.
Create a user, add an environment, start the Docker wizard, choose "Socket", name it e.g. "local" and close the wizard.
Under "home", select the newly created environment then.
You'll have access to all containers, images, volumes and more via the left sidebar then.
In case you want to apply or revert the database migrations, you need to use Sqitch.
The sqitch
directory in this repository contains a sqitch
executable that you can use to interact with the migrations residing in the directory's subdirectories.
For example, run ./sqitch deploy
to fill the database with structure like tables, types and policies.
In case you want to be able to simple call sqitch deploy
without ./
instead, add an alias sqitch="./sqitch"
to your shell configuration (~/.bashrc
, ~/.zshrc
, ...).