CountMeIn is a application for managing when teams of people should meet. Manage multiple events with a dashboard to organise you life:
- Create users through Google authentication
- Create events that you can invite people to through a unique shareable code
- Add your availability to an event, view other peoples availability in real time
- Generate a list of potential times during which team members can go to the event
- Finalise your event with one of the potential times, the event is then added to your dashboard
- Alternatively export the event using a .ical file and manually add it to a calendar of your choice
If you would like to visit a live version of the application please visit
- Frontend: https://countmein750.netlify.app/
- Backend: https://countmein.etinaude.dev/
In order to run the application the project must first be set up with valid environment files in each the frontend and the backend in order for the application to be able to launch. These files will be provided on submission as a zip file containing all the files that are needed. If you have any problem with setting up the project please feel free to message our team on discord using any of our team member handles
This project has been set up as a monorepo via Lerna. Commands run in the root will apply to all packages (frontend and backend)
-
Setup environment files for both the frontend and the backend using the information in this README. You can find information on setting up the environment files in each of the Environment Files sections below for Backend and Frontend respectively
-
Install packages
npm install
- Build the application
npm run build
This will create a dist
output in the backend and a will compile to various parts of the .next
folder within the frontend. For more information about NextJS compiling please see this
- Run application
npm run start
The backend of the application is written with Express with MongoDB and a Mongoose database driver
Environment files have been included as a zip in the submission. Take all files that are in the provided backend folder of the environment file submission zip and extract them to the root of packages/backend/
Alternatively you can manually fill out the environment files with your own details by copying the template environment file
cd packages/backend/
cp .env.template .env
# Fill out with your own details
Please ensure that GOOGLE_APPLICATION_CREDENTIALS
is set the the absolute path of the file prod.firebase.creds.json
on your local machine, this is the only field in the backend environment file that you have to manually set
In order to run the backend independently run these commands after navigating to the backend project (packages/backend
). Please see the top of the file to run the entire project.
-
Ensure that the environment files for backend are setup using the instructions above
-
Install the dependencies
npm install
- Create a production build
npm run build
- Start the backend
npm run start
If you have configured the backend environment correctly the backend should launch at http://localhost:3000/api/v1
This is a Next.js project bootstrapped with create-next-app
.
Frontend requires a single environment file. You can skip manually setting each environment variable in the file by using the provided submission environment files. Otherwise to setup the environment file manually:
cd packages/frontend/
cp .env.template .env.local
# Fill .env.local with appropriate secrets
In order to run the frontend independently run these commands after navigating to the frontend project at (packages/frontend
). Please see the top of the file to run the entire project!
- Ensure that the environment files for frontend are setup using the instructions above
- Install the dependencies
npm install
- Create a production build
npm run build
- Start the frontend
npm run start
If you have configured the frontend environment correctly the backend should launch at http://localhost:3001
, you should be able to visit this link in your web-browser of choice
Run npm test
in the project root to execute the unit tests via Jest.
The wiki can contains all meeting notes and major design decisions, rationale and project management information. The wiki can be found here.
- Andreas Knapp (wqsz7xn#9473)
- Danielle Print (Danielle#2475)
- Raina Song (Raina#1221)
- Etienne Naude (bread man#3227)
- Samuel Chen (Luffy#2613)