Skip to content

A full stack application to manage donations at a shelter

License

Notifications You must be signed in to change notification settings

DillonOLeary/shelter_project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Shelter Project

This project is a basic donation inventory management application. I wrote it as a part of an interview for a volunteer position at Open Seattle.

Project Requirements

  1. Donation Registration: A feature that allows the shelter staff to record details of the donations, such as the donor's name, type of donation (money, food, clothing, etc.), quantity or amount donated, and the date of the donation.
  2. Donation Distribution: A feature to log when and how much of the donations are distributed, capturing the type of donation, quantity or amount distributed, and the date of distribution.
  3. Donation Reports: Your solution should have the capacity to generate two types of reports: (1) An inventory report displaying the current status of donations, grouped by type. (2) A donator report, summarizing the total contributions received from each donor.

To solve this, I created two solutions:

Google Suite Solution

This solution uses the Google Suite to handle data intake and report generation. I strongly prefer this solution given my understanding of the requirements, I only worked on the FastAPI solution to highlight my coding.

  • Donation Registration Form: https://forms.gle/Cjf4HdFWKvvPTjcf8
    • staff can record donations here
  • Donation Distribution Form: https://forms.gle/dqnYfcab7yVNYmkE9
    • donations that have been distributed can be recorded here
  • All Shelter Data, including a donation balances report: https://docs.google.com/spreadsheets/d/1Ehh3CRvd2P31k7PUY93IfwpYoGridXFWKaw_pgLwTWw/edit?usp=sharing

Pros of this solution:

  • fast to make, required no coding knowledge other than some knowledge of Google Sheets functions
    • because of this, we can enable the client to extend this product without our support
  • managed service, so we are not on the hook if something goes wrong with the software
  • great interface
  • can integrate well with other tools if the organization already uses Google Suite

Cons:

  • we are making our client dependent on Google, so Google could make changes they don't like
  • be not coding a solution, we give up some fine grained control. Google Suite is pretty extensive, so I don't think this would be much of an issue

FastAPI Solution (AKA this code)

This full stack solution uses FastAPI for the backend and React for the frontend.

How to run

Requirements:

  • Python 3.10+
  • Node v18+

Running the backend server

After downloading the project and navigating to the project root directory, create a virtual enviroment and activate it:

Mac and Linux

python3 -m venv venv
source venv/bin/activate

Windows

py -m venv venv
venv\Scripts\activate

Then install the dependencies:

pip install -r requirements.txt

To run the server:

uvicorn app.main:app --reload
Note: you may need to delete uvloop from requirements.txt if you are using Windows. I need to test it more, but there seems to be bug with it, but removing the dependency doesn't create any issues

Once server is running, you can view generated API documentation at http:https://127.0.0.1:8000/docs

Running the frontend server

In a different session, run:

cd frontend
npm install
npm start

The frontend can be viewed at http:https://localhost:3000

About

A full stack application to manage donations at a shelter

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published