GT Lost and Found is a web service that allows GT students and faculty to locate their lost items around campus.
GT Lost and Found and all modifications are licensed under the AGPL v3.0 license.
Copyright © 2024 Romulus Khalil (romuluskhalil3@gmail.com)
The app is a NextJS 13 application (built using create-next-app). GT Lost and Found is written in TypeScript and uses Tailwind CSS for styling. GT Lost and Found uses Supabase (a PostgreSQL alternative to Firebase) as its primary database and authenticator. Supabase utilizes Cookie-based authentication, meaning user's credentials are stored in cookies upon login.
- Node.js (any recent version will suffice)
- Node Package Manager (NPM) version 10.4 or later
- For the maps to properly display, a Google Maps API Key is required
- All other required API keys are supplied in
.env.example
After the repository is cloned to your local machine, run the following command in the repo folder:
npm install
Then run this command to copy the contents of .env.example to .env:
cp .env.example .env
To start a local development version of the frontend app, run:
npm run dev
The app will then become viewable at http://localhost:3000, which can then be viewed in the browser.
With that, any changes in the frontend code should be hot-reloaded to localhost.
When running the program, Next may throw errors in the bottom left relating to the Google Maps API. These can be safely ignored. In strict mode, React renders components twice upon the initial page load. This can cause some weird behaviors with the useEffect hook, throwing the errors. For more information, click here.
GT Lost and Found uses ESLint for linting and formatting through Prettier. Husky is used to create hooks that automatically lint and format code pre-commit.
GT Lost and Found welcomes contributions from anyone! Regular development is performed by the project owner (Romulus Khalil) but contributions are still encouraged. There is no set guide on how to contribute just yet but expect one in the future!