├── backend
├── Dockerrun.aws.json
├── .dockerignore
├── client.ts
├── prisma
│ ├── migrations
│ │ ├── 20241231212558_location_directions
│ │ │ └── migration.sql
│ │ ├── 20250423211235_add_legacy_hours
│ │ │ └── migration.sql
│ │ ├── migration_lock.toml
│ │ ├── 20230421204737_cancelation
│ │ │ └── migration.sql
│ │ ├── 20250515224753_change_hours
│ │ │ └── migration.sql
│ │ ├── 20230310180636_init
│ │ │ └── migration.sql
│ │ ├── 20240317021038_test
│ │ │ └── migration.sql
│ │ ├── 20250109214354_remove_worked_hours
│ │ │ └── migration.sql
│ │ ├── 20240313215409_
│ │ │ └── migration.sql
│ │ ├── 20250104195833_optional_event_owner
│ │ │ └── migration.sql
│ │ ├── 20240316044752_about
│ │ │ └── migration.sql
│ │ ├── 20230405215058_
│ │ │ └── migration.sql
│ │ ├── 20250102030506_event_status
│ │ │ └── migration.sql
│ │ ├── 20230207055813_init
│ │ │ └── migration.sql
│ │ ├── 20240117194255_on_delete
│ │ │ └── migration.sql
│ │ ├── 0_init
│ │ │ └── migration.sql
│ │ ├── 20240211003708_
│ │ │ └── migration.sql
│ │ ├── 20240217012742_back_to_uppercase
│ │ │ └── migration.sql
│ │ ├── 20250109213408_remove_columns
│ │ │ └── migration.sql
│ │ └── 20230217202647_init
│ │ │ └── migration.sql
│ └── schema.prisma
├── docker-compose.yml
├── Dockerfile
├── Dockerfile.deploy
├── src
│ ├── utils
│ │ ├── jsonResponses.ts
│ │ └── script.ts
│ ├── about
│ │ ├── controllers.ts
│ │ └── views.ts
│ ├── website
│ │ ├── views.ts
│ │ └── controllers.ts
│ ├── swagger.ts
│ ├── server.ts
│ ├── index.ts
│ └── middleware
│ │ └── auth.ts
├── jest.config.js
├── .env.template
├── .prettierrc
├── package.json
└── README.md
├── lfbi_logo.png
├── frontend
├── public
│ ├── favicon.ico
│ ├── lfbi_logo.png
│ ├── lfbi_splash.png
│ ├── lfbi_logo_notext.png
│ ├── lfbi_sample_event.jpg
│ ├── vercel.svg
│ ├── thirteen.svg
│ └── next.svg
├── postcss.config.js
├── next.config.js
├── src
│ ├── components
│ │ ├── Layout.tsx
│ │ ├── organisms
│ │ │ ├── FetchDataError.tsx
│ │ │ ├── EventCardCancelConfirmation.tsx
│ │ │ ├── NavBar.tsx
│ │ │ ├── VerifyEmailConfirmation.tsx
│ │ │ ├── ManageWebsite.tsx
│ │ │ ├── RecoverEmailConfirmation.tsx
│ │ │ ├── ManageProvidersForm.tsx
│ │ │ ├── VerifyEmailForm.tsx
│ │ │ ├── ForgotPasswordForm.tsx
│ │ │ ├── EventCardRegister.tsx
│ │ │ ├── EventCard.tsx
│ │ │ └── LinkEmailPasswordForm.tsx
│ │ ├── atoms
│ │ │ ├── Chip.tsx
│ │ │ ├── LinearProgress.tsx
│ │ │ ├── IconText.tsx
│ │ │ ├── Checkbox.tsx
│ │ │ ├── IconTextHeader.tsx
│ │ │ ├── MultilineTextField.tsx
│ │ │ ├── TextField.tsx
│ │ │ ├── Snackbar.tsx
│ │ │ ├── Alert.tsx
│ │ │ ├── DatePicker.tsx
│ │ │ ├── TimePicker.tsx
│ │ │ ├── Select.tsx
│ │ │ ├── SearchBar.tsx
│ │ │ ├── Editor.tsx
│ │ │ ├── Button.tsx
│ │ │ ├── TextCopy.tsx
│ │ │ └── Dropzone.tsx
│ │ ├── molecules
│ │ │ ├── Loading.tsx
│ │ │ ├── Card.tsx
│ │ │ ├── Avatar.tsx
│ │ │ ├── CardList.tsx
│ │ │ ├── Footer.tsx
│ │ │ ├── Modal.tsx
│ │ │ ├── Table.tsx
│ │ │ ├── AppBar.tsx
│ │ │ └── TabContainer.tsx
│ │ └── templates
│ │ │ ├── CenteredTemplate.tsx
│ │ │ ├── DefaultTemplate.tsx
│ │ │ ├── WelcomeTemplate.tsx
│ │ │ └── EventTemplate.tsx
│ ├── utils
│ │ ├── constants.ts
│ │ ├── firebase.ts
│ │ ├── types.ts
│ │ ├── api.ts
│ │ ├── useManageUserState.ts
│ │ └── useManageAttendeeState.ts
│ ├── pages
│ │ ├── _document.tsx
│ │ ├── api
│ │ │ └── hello.ts
│ │ ├── about.tsx
│ │ ├── login.tsx
│ │ ├── website.tsx
│ │ ├── signup.tsx
│ │ ├── verify.tsx
│ │ ├── events
│ │ │ ├── view.tsx
│ │ │ ├── create.tsx
│ │ │ └── [eventid]
│ │ │ │ ├── attendees.tsx
│ │ │ │ ├── register.tsx
│ │ │ │ └── edit.tsx
│ │ ├── users
│ │ │ ├── view.tsx
│ │ │ └── [userid]
│ │ │ │ └── manage.tsx
│ │ ├── password
│ │ │ ├── forgot.tsx
│ │ │ ├── [oobCode]
│ │ │ │ ├── reset.tsx
│ │ │ │ ├── recover.tsx
│ │ │ │ └── verify.tsx
│ │ │ └── index.tsx
│ │ ├── _app.tsx
│ │ ├── index.tsx
│ │ └── privacy.tsx
│ └── styles
│ │ └── globals.css
├── next-env.d.ts
├── tailwind.config.js
├── .env.template
├── .gitignore
├── README.md
├── tsconfig.json
└── package.json
├── heroku.yml
├── .github
├── CODEOWNERS
├── pull_request_template.md
└── workflows
│ ├── deploy.yml
│ └── jestci.yml
├── package.json
├── .devcontainer
├── Dockerfile
└── devcontainer.json
├── .gitignore
├── LICENSE
└── README.md
/backend/Dockerrun.aws.json:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/backend/.dockerignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .env
--------------------------------------------------------------------------------
/lfbi_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cornellh4i/lagos-volunteers/HEAD/lfbi_logo.png
--------------------------------------------------------------------------------
/frontend/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cornellh4i/lagos-volunteers/HEAD/frontend/public/favicon.ico
--------------------------------------------------------------------------------
/frontend/public/lfbi_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cornellh4i/lagos-volunteers/HEAD/frontend/public/lfbi_logo.png
--------------------------------------------------------------------------------
/frontend/public/lfbi_splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cornellh4i/lagos-volunteers/HEAD/frontend/public/lfbi_splash.png
--------------------------------------------------------------------------------
/frontend/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | };
7 |
--------------------------------------------------------------------------------
/frontend/public/lfbi_logo_notext.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cornellh4i/lagos-volunteers/HEAD/frontend/public/lfbi_logo_notext.png
--------------------------------------------------------------------------------
/frontend/public/lfbi_sample_event.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cornellh4i/lagos-volunteers/HEAD/frontend/public/lfbi_sample_event.jpg
--------------------------------------------------------------------------------
/backend/client.ts:
--------------------------------------------------------------------------------
1 | import { PrismaClient } from "@prisma/client";
2 |
3 | const prisma = new PrismaClient();
4 | export default prisma;
5 |
--------------------------------------------------------------------------------
/heroku.yml:
--------------------------------------------------------------------------------
1 | build:
2 | docker:
3 | web: backend/Dockerfile
4 | release:
5 | image: web
6 | command:
7 | - npx prisma migrate deploy
8 |
--------------------------------------------------------------------------------
/backend/prisma/migrations/20241231212558_location_directions/migration.sql:
--------------------------------------------------------------------------------
1 | -- AlterTable
2 | ALTER TABLE "Event" ADD COLUMN "locationLink" TEXT;
3 |
--------------------------------------------------------------------------------
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | # Users who will be automatically be notified & added as reviewers when a PR is made (should be TL)
2 |
3 | * @akinfelami
4 | * @jasozh
5 |
--------------------------------------------------------------------------------
/backend/prisma/migrations/20250423211235_add_legacy_hours/migration.sql:
--------------------------------------------------------------------------------
1 | -- AlterTable
2 | ALTER TABLE "User" ADD COLUMN "legacyHours" INTEGER NOT NULL DEFAULT 0;
3 |
--------------------------------------------------------------------------------
/backend/prisma/migrations/migration_lock.toml:
--------------------------------------------------------------------------------
1 | # Please do not edit this file manually
2 | # It should be added in your version-control system (i.e. Git)
3 | provider = "postgresql"
--------------------------------------------------------------------------------
/backend/prisma/migrations/20230421204737_cancelation/migration.sql:
--------------------------------------------------------------------------------
1 | -- AlterTable
2 | ALTER TABLE "EventEnrollment" ADD COLUMN "cancelationMessage" TEXT,
3 | ADD COLUMN "canceled" BOOLEAN DEFAULT false;
4 |
--------------------------------------------------------------------------------
/frontend/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {
3 | reactStrictMode: true,
4 | transpilePackages: ["@mdxeditor/editor"],
5 | };
6 |
7 | module.exports = nextConfig;
8 |
--------------------------------------------------------------------------------
/frontend/src/components/Layout.tsx:
--------------------------------------------------------------------------------
1 | import React, { ReactNode } from "react";
2 |
3 | const Layout = ({ children }: { children: ReactNode }) => {
4 | return
27 | 46 | Your account has been verified! You can close this page. 47 |
48 |56 | Your link may be expired or invalid. Please try again. 57 |
58 |