Giter Club home page Giter Club logo

yaleorgs's Introduction

NOTICE: The YaleOrgs API has been deprecated and will no longer be updated. All endpoints, plus new features, have been merged into the Yalies API. YaleOrgs will be shut down completely in November 2022.

A developer-friendly API that allows access to information about Yale College student clubs and organizations.

Screenshot

Initial Setup

To develop changes to the application, you'll need to run it locally for testing.

This guide assumes, as prerequisites, that you have:

  • A MacOS or Linux-based OS (if you use Windows, you can still follow along, but some commands may be different)
  • Access to, and basic understanding of, the terminal on your computer
  • Python 3
    • Modern MacOS versions and most Linux distributions include Python 3 by default.
    • If you use a version of MacOS with only Python 2, first install Homebrew, a helpful package manager for MacOS, then use it to install Python 3:
    brew install python3
  • PostgreSQL, which is needed for working with our databases:
    • If you're on MacOS, use Homebrew (or another package manager) to install PostgreSQL
    brew install postgresql

Next, make a "fork" of the api repository by clicking the Fork button in top right of repository page. This will make a copy of the codebase under your own personal user account that you'll be able to modify as you wish. When you make changes to your own repository, you can then send those changes in to be approved and merged into the main codebase. (Read on to learn how!)

Next, clone your fork of the repository to your local computer and enter the newly created directory:

git clone https://github.com/[YourUsernameGoesHere]/YaleOrgs
cd api

NOTE: If you already cloned the repository from the main source, you can update the "remote" (the address that your local repository will communicate with on GitHub) to tell git where your fork is:

git remote set-url origin https://github.com/[YourUsernameGoesHere]/YaleOrgs

Next, add a new upstream remote to tell git what the address for the base version of the repository is:

git remote add upstream https://github.com/ErikBoesen/YaleOrgs

Install Python dependencies:

pip3 install -r requirements.txt
pip3 install -r requirements-test.txt

If pip3 is not recognized, make sure you have installed Python 3 on your system.

Finally, run the database migrations to get the local SQLite database configured:

python3 -m flask db upgrade

Running

To locally launch the application:

FLASK_APP=app.py FLASK_ENV=development flask run

The app will subsequently be available at localhost:5000.

When running locally, the app will use a non-hosted SQLite database, meaning that all database contents will be stored in app.db. If you wish to run SQL queries on this database, simply install sqlite (best obtained through Homebrew or other package manager), and run:

sqlite3 app.db

Scraper

Our scraper crawls Yale's websites in order to obtain the data we provide. See documentation here.

Making changes

In order to contribute your changes to our codebase, there are a few steps you must go through. Please reach out to your development team lead with any questions.

Definitions:

  • upstream: the "official” version of the repository (https://github.com/Yalies/api)
  • fork: a copy of the upstream repository that you create on your own user account and have full access to
  • remote: git’s local record of where on the internet the repository is hosted
  • origin: the default remote that is generated when you clone a repository
  • branch: a separate copy of the code within the same repository
  • master/main: the default branch in git repositories

Submitting changes

Pull the latest code from the upstream repository to ensure you're working with the newest:

git pull upstream master

Switch to a new branch to hold your changes:

git checkout -b changes_description

The name of the branch should be short and refer to what you’re planning to change.

Next, make your code changes! Be sure to test them and make sure the app runs as you expect. Next, commit your code:

# To tell git to track all the files you changed
git add -A
# To label this set of changes:
git commit -m "Describe your changes here"
# Make sure to title your commit in the imperative tense, for example "Add new features” instead of "Added…", "Adding…", etc.

Next, upload your code to your fork:

git push -u origin your_branch_name

NOTE: If you make another change on this branch, you can just do git push (without additional flags) and it will automatically push to the last remote/branch you specified.

Next, create a pull request (a request to merge your changes into the main repository) by going to the repository page on GitHub and clicking the green "Compare & Pull Request” button that appears.

Title the pull request with a description of all included changes.

In the description, write "Fixes #X” or "Resolve #X”, with X being an issue number, for each issue you're fixing in this PR. This will save time by telling GitHub to automatically close those issues once your changes are merged.

On the right side under Reviewers, select everyone else on our team, particularly your team lead.

Congratulations! Your changes will be up for review. After they are merged, you'll need to check out back to master and pull your changes into master from the upstream repository.

git checkout master
git pull upstream master

Repeat until all features are implemented and all bugs fixed! 🙂

License

MIT

Author

Built by Erik Boesen.

yaleorgs's People

Contributors

erikboesen avatar

Stargazers

 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.