Grant Guru 🎓

Production link

Visit our API here!

Front End Repository

MacOS Installation

  1. Clone the repository
  2. CD into the root directory
  3. Create and activate the virtual environment
$ python3 -m venv .venv
$ source .venv/bin/activate
  1. Install requirements with pip install -r requirements.txt

  2. Run $ touch grant_guru_be/.env to create a .env environment variable file in the grant_guru_be directory

  3. Add your database environment variables to the .env file

SECRET_KEY=<django-insecure>
DB_NAME=<your_database_name>
DB_USER=<your_database_user>
DB_PASSWORD=<your_database_password>
DB_HOST=<your_database_host>
PORT=<your_database_port>
  1. Run migrations python3 manage.py migrate
  2. Start the server python3 manage.py runserver

Endpoints

Details

Get a user

GET /api/v1/users/:user_id
Details
Code Description
200 OK

Example Response:

{
    "data": {
        "id": "1",
        "type": "user",
        "attributes": {
            "first_name": "Hugh",
            "last_name": "Jackman",
            "image_url": "http://www.image-url.com"
        }
    }
    "relationships": {
        "grants": {
            "data": [
                {
                    "type": "Grant",
                    "id": "2"
                },
                {
                    "type": "Grant",
                    "id": "3"
                },
                {
                    "type": "Grant",
                    "id": "4"
                },
                {
                    "type": "Grant",
                    "id": "52"
                }
            ],
        "meta": {
            "count": 4
            }
        }
    }
}

Get a user's favorites

GET /api/v1/users/:id/favorites
Details
Code Description
200 OK

Example Response:

{
    "data": [
        {
            "id": "1",
            "type": "scholarship",
            "attributes": {
                "title": "Female Privacy Leaders Scholarship",
                "organization": "Women in Security and Privacy (WISP)",
                "amount": "1234",
                "description": "Lorem ipsum dolor sit amet, ...",
                "deadline": "March 01, 2023",
                "education": "Graduate",
                "state": "Colorado",
                "women": "False",
                "lgbt": "True",
                "ethnicity": [
                    "Black",
                    "Hispanic"
                ],
                "veteran": "False",
                "immigrant": "True",
                "url": "https://linkedin.com/...",
                "image_url": "https://shutter_stock_static_image"
            }
        },
        {
            "id": "2",
            "type": "scholarship",
            "attributes": {
                "title": "RailsConf 23",
                "organization": "Ruby Central",
                "amount": "1234",
                "description": "Lorem ipsum dolor sit amet, ...",
                "deadline": "March 01, 2023",
                "education": "Graduate",
                "state": "",
                "women": "False",
                "lgbt": "True",
                "ethnicity": [],
                "veteran": "False",
                "immigrant": "True",
                "url": "https://linkedin.com/...",
                "image_url": "https://static_image.wow_nice"
            }
        },
        {...},
        {...}
    ]
}

Get all scholarships

GET /api/v1/scholarships
Details

Parameters:

education=string
gender=string
state=string
lgbt=bool
ethnicity=array
veteran=bool
immigrant=bool
Code Description
200 OK

Example Response:

{
    "data": [
        {
            "id": "1",
            "type": "scholarship",
            "attributes": {
                "title": "Female Privacy Leaders Scholarship",
                "organization": "Women in Security and Privacy (WISP)",
                "amount": "1234",
                "description": "Lorem ipsum dolor sit amet, ...",
                "deadline": "March 01, 2023",
                "education": "Graduate",
                "state": "Colorado",
                "women": "False",
                "lgbt": "True",
                "ethnicity": [
                    "Black",
                    "Hispanic"
                ],
                "veteran": "False",
                "immigrant": "True",
                "url": "https://linkedin.com/...",
                "image_url": "https://shutter_stock_static_image"
            }
        },
        {
            "id": "2",
            "type": "scholarship",
            "attributes": {
                "title": "RailsConf 23",
                "organization": "Ruby Central",
                "amount": "1234",
                "description": "Lorem ipsum dolor sit amet, ...",
                "deadline": "March 01, 2023",
                "education": "Graduate",
                "state": "",
                "women": "False",
                "lgbt": "True",
                "ethnicity": [],
                "veteran": "False",
                "immigrant": "True",
                "url": "https://linkedin.com/...",
                "image_url": "https://static_image.wow_nice"
            }
        },
        {...},
        {...}
    ]
}

Get a scholarship

GET /api/v1/scholarships/:id
Details
Code Description
200 OK

Example Response:

{
    "data": {
        "id": "1",
        "type": "scholarship",
        "attributes": {
            "title": "Female Privacy Leaders Scholarship",
            "organization": "Women in Security and Privacy (WISP)",
            "amount": "1234",
            "description": "Lorem ipsum dolor sit amet, ...",
            "deadline": "March 01, 2023",
            "education": "Graduate",
            "state": "Colorado",
            "women": "False",
            "lgbt": "True",
            "ethnicity": [
                "Black",
                "Hispanic"
            ],
            "veteran": "False",
            "immigrant": "True",
            "url": "https://linkedin.com/...",
            "image_url": "https://shutter_stock_static_image"
        }
    } 
}

Create a favorite

POST /api/v1/users/:user_id/scholarships/:scholarship_id
Details
Code Description
201 created

Example Response:

{
    "data": {
        "id": "1",
        "type": "scholarship",
        "attributes": {
            "title": "Female Privacy Leaders Scholarship",
            "organization": "Women in Security and Privacy (WISP)",
            "amount": "1234",
            "description": "Lorem ipsum dolor sit amet, ...",
            "deadline": "March 01, 2023",
            "education": "Graduate",
            "state": "Colorado",
            "women": "False",
            "lgbt": "True",
            "ethnicity": [
                "Black",
                "Hispanic"
            ],
            "veteran": "False",
            "immigrant": "True",
            "url": "https://linkedin.com/...",
            "image_url": "https://shutter_stock_static_image"
        }
    } 
}

Delete a favorite

DELETE /api/v1/users/:user_id/scholarships/:scholarship_id
Details
Code Description
200 OK

Example Response:

{
    "data": {
        "id": "1",
        "type": "scholarship",
        "attributes": {
            "title": "Female Privacy Leaders Scholarship",
            "organization": "Women in Security and Privacy (WISP)",
            "amount": "1234",
            "description": "Lorem ipsum dolor sit amet, ...",
            "deadline": "March 01, 2023",
            "education": "Graduate",
            "state": "Colorado",
            "women": "False",
            "lgbt": "True",
            "ethnicity": [
                "Black",
                "Hispanic"
            ],
            "veteran": "False",
            "immigrant": "True",
            "url": "https://linkedin.com/...",
            "image_url": "https://shutter_stock_static_image"
        }
    } 
}

Schema

Screen Shot 2023-04-06 at 11 37 34 AM

Contributors

All participants in this project are graduates from the Turing School of Software & Design.

Kaylah Rose Mitchell
      GitHub: @kaylahrose
      LinkedIn: kaylahrose

Matisse Mallette
      GitHub: @MatisseMallette
      LinkedIn: matisse-mallette

Sergio Azcona
      GitHub: @Sergio-Azcona
      LinkedIn: sergio-azcona

Drew Layton
      GitHub: @dlayton66
      LinkedIn: drew-layton