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
- Host: GitHub
- URL: https://github.com/morphclue/apollusia
- Owner: Morphclue
- License: mit
- Created: 2022-04-08T09:33:31.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2025-08-18T00:59:33.000Z (8 months ago)
- Last Synced: 2025-08-23T10:32:49.522Z (7 months ago)
- Topics: angular, hacktoberfest, nestjs, typescript
- Language: TypeScript
- Homepage: http://apollusia.com
- Size: 5.61 MB
- Stars: 8
- Watchers: 3
- Forks: 4
- Open Issues: 27
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
#
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


### Create Polls with Advanced Options


### Choose Available Dates and Times


### Participate and Find the Best Option


## 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
- Anonymous participation
- Participants can vote without entering their name
- Editing participation
- Participants can edit their participation
- Blind participation
- Participants can't see other participants until they participate
- Comments
- Add comments to a poll
### Poll Options
- Participation limit
- Limit the number of participants
- Maybe Option
- Friendlier event selection with a Maybe option
- Deadline
- Set a deadline for new participations
- Rich Text and Links in Description
- Add Markdown formatted text and links to the description
- Events of varying length
- Every event can have its own length
- Event Notes
- Add notes to events to provide additional information
### Productivity
- Autofill
- Create many sequential events automatically, with breaks and on multiple days
- Cloning polls
- Clone polls to start off with the same options
- Postponing events
- Move all events to a later date
- iCal Export
- Keep track of your polled events and 1-1 meetings using your favorite calendar app
### Poll Management
- Invite Participants
- Invite participants via email or other means
- Notifications
- Receive quick updates to polls and participations via Push Notifications on all your devices
- Email Updates
- Receive detailed updates to polls and participations via Email
- 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