An open API service indexing awesome lists of open source software.

https://github.com/morphclue/apollusia

Calendar tool for coordinating meetings
https://github.com/morphclue/apollusia

angular hacktoberfest nestjs typescript

Last synced: 7 months ago
JSON representation

Calendar tool for coordinating meetings

Awesome Lists containing this project

README

          

# Apollusia Logo Apollusia

Apollusia is a calendar tool for coordinating events with multiple people.
It is a web application written in Angular with NestJS as the backend.
A running instance of the application can be found under https://apollusia.com/.
Feel free to check it out!

:star: Star this project on GitHub — it motivates me a lot!

## Screenshots

### View Your Polls and Participations in the Dashboard

![Dashboard](.github/images/dashboard_light.png#gh-light-mode-only)
![Dashboard](.github/images/dashboard_dark.png#gh-dark-mode-only)

### Create Polls with Advanced Options

![Create Polls](.github/images/new_poll_light.png#gh-light-mode-only)
![Create Polls](.github/images/new_poll_dark.png#gh-dark-mode-only)

### Choose Available Dates and Times

![Choose Dates](.github/images/choose_events_light.png#gh-light-mode-only)
![Choose Dates](.github/images/choose_events_dark.png#gh-dark-mode-only)

### Participate and Find the Best Option

![Participate](.github/images/participate_light.png#gh-light-mode-only)
![Participate](.github/images/participate_dark.png#gh-dark-mode-only)

## Features

Apollusia offers a variety of features to make event coordination as easy as possible.
All features are completely free and can be used without registration.

### Participation


incognito
Anonymous participation

Participants can vote without entering their name

pencil-square
Editing participation

Participants can edit their participation

eye-slash
Blind participation

Participants can't see other participants until they participate

chat-dots
Comments

Add comments to a poll

### Poll Options


1-square
Participation limit

Limit the number of participants

question-square
Maybe Option

Friendlier event selection with a Maybe option

calendar-day
Deadline

Set a deadline for new participations

markdown
Rich Text and Links in Description

Add Markdown formatted text and links to the description

calendar-week
Events of varying length

Every event can have its own length

sticky
Event Notes

Add notes to events to provide additional information

### Productivity


calendar-range
Autofill

Create many sequential events automatically, with breaks and on multiple days

copy
Cloning polls

Clone polls to start off with the same options

fast-forward
Postponing events

Move all events to a later date

calendar2-week
iCal Export

Keep track of your polled events and 1-1 meetings using your favorite calendar app

### Poll Management


send
Invite Participants

Invite participants via email or other means

bell
Notifications

Receive quick updates to polls and participations via Push Notifications on all your devices

envelope
Email Updates

Receive detailed updates to polls and participations via Email

clock-history
History

See all changes to a poll

## Setup

Create an `.env` file in the backend directory and add the following environment variables:

```properties
VAPID_PUBLIC_KEY= # for push notifications
VAPID_PRIVATE_KEY= # for push notifications
KEYCLOAK_CLIENT_SECRET=
AUTH_PUBLIC_KEY=
CONTACT_OPERATOR=
CONTACT_MAIL=
CONTACT_ADDRESS=
```

VAPID keys can be generated using the following command:

```bash
npx web-push generate-vapid-keys
```

To set up Keycloak, follow these steps
- Run it with `docker compose up -d keycloak`
- Go to `http://localhost:8080/auth`.
- Create a new realm called `apollusia`
- Create a client called `web` with the following options:
- Valid Redirect URLs: `http://localhost:4200/*`
- Valid Post Logout Redirect URLs: `+`
- Web Origins: `+`.
- Under "Realm Settings > Login", configure:
- User registration: On
- Forgot password: On
- Remember me: On
- Email as username: On
- Login with email: On
- Duplicate emails: Off
- Verify email: Off
- Under "Realm Settings > User profile", create these attributes:
1. - Attribute [Name]: pushTokens
- Display Name: Push Tokens
- Multivalued: On
- Attribute Group: user-metadata
- Who can edit?: User, Admin
- Who can view?: User, Admin
2. - Attribute [Name]: notifications
- Display Name: Notifications
- Multivalued: On
- Attribute Group: user-metadata
- Who can edit?: User, Admin
- Who can view?: User, Admin
- Create a user as follows:
- Email Verified: Yes
- Username/email: admin@apollusia.com
- First Name: Apollusia
- Last Name: Admin
- Hit Create
- Credentials > Set Password: `root`
- Role Mapping > Assign Role > Filter by clients > Select all (the list may be long, change pagination to 100 elements to see all) > Assign
- Role Mapping > Assign Role > Filter by realm roles > Select all > Assign

You can get the Keycloak Client Secret like this:
- Go to http://localhost:8080/auth/admin/master/console/#/apollusia/clients
- Select admin-cli
- Under Settings, make sure Client authentication is enabled
- Hit Save
- Go to the Credentials tab and copy the Client Secret

To get the Keycloak public key, follow these steps:
- Go to http://localhost:8080/auth/admin/master/console/#/apollusia/realm-settings/keys
- Click on the RS256 Public Key
- Copy the base64 key