Giter Club home page Giter Club logo

culd-hub's Introduction

Issues Build Coverage


Logo

CU Lion Dance Hub

Show Management Software for Columbia University Lion Dance
Get started »

View Site · Report Bug · Request Feature

About The Project

This is a custom show management web application for Columbia University Lion Dance, began in the summer of 2022. Every year, CU Lion Dance receives dozens of performance bookings, each of which requires careful planning and coordination of logistics. Previously, a Google Sheets setup was used for members to register for shows, but this grew increasingly cumbersome with scale and became hard to maintain. Even with Apps Script, it was also not fully customizable to the needs of members. From there, the CU Lion Dance Hub was born.

Django React Postgres Apollo-GraphQL Ant-Design Docker Heroku

(back to top)

Getting Started

Prerequisites

CU Lion Dance Hub requires the following to run:

Installation

Clone the repository and move to the project directory.

git clone https://github.com/ew2664/culd-hub.git
cd culd-hub

Install the required Python dependencies for the backend.

cd backend && pip install -r requirements.txt

Install the required Node.js dependencies for the frontend.

cd ../frontend && yarn

(back to top)

Local Deployment

Running with Docker Compose

Move to the project directory.

cd culd-hub

Build and run the Docker image.

docker-compose up --build

Or to run it in the background, just add the -d option.

docker-compose up -d --build

Navigate to http://localhost:3000/ to see the results.

If you need to stop the containers:

docker-compose down

Running without Docker Compose

Make sure you have followed the dependency installation instructions under Getting Started.

Move to the backend directory and clean any existing migrations.

cd backend
chmod u+x scripts/clean_migrations.sh
scripts/clean_migrations.sh

Make and run new migrations.

python manage.py makemigrations
python manage.py migrate

Alternatively, the above two steps can be automated with the make_migrations script. (The -c flag sets the option to clean any existing migrations.)

chmod u+x scripts/make_migrations.sh
scripts/make_migrations.sh -c

If you already have mock data (e.g. scripts/mock-data.json), you can load it into the database.

python manage.py loaddata scripts/data.json

You can also choose to enter data yourself later with the admin site. In that case, create a superuser.

python manage.py createsuperuser

Create a .env file from the env.template file provided and fill in the values.

cp core/settings/env.template core/settings/.env

Start the backend server on port 8000.

python manage.py runserver

In a separate shell, move to the frontend directory and start the frontend server.

cd frontend && yarn start

You may need to temporarily point the backend proxy used by your development server to your backend on port 8000. Restart the server after modifying the following in frontend/src/setupProxy.js .

createProxyMiddleware({
    target: "http://127.0.0.1:8000",
    changeOrigin: true,
})

Navigate to http://localhost:3000/ to see the results.

(back to top)

culd-hub's People

Contributors

catw101 avatar dependabot[bot] avatar thetawom avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

culd-hub's Issues

Set up user profile frontend functionality

Call mutation #5 from profile page to edit the following user profile information:

  • first name (user attribute)
  • last name (user attribute)
  • email (user attribute)
  • phone number (user attribute)
  • class year (member attribute)
  • school (member attribute)

Change password feature should probably be implemented separately with a different API.

Part of larger ongoing issue #2.

Set up password reset

Frontend components:

  • login page link
  • forgot password page
  • reset password page
  • forgot password page logic
  • reset password page logic

Backend components:

  • send password reset mutation
  • reset password mutation

(see django.core.signing)

Problem creating users

Describe the bug
When I try to sign up with a new account, I get the following error in the console: 'UserManager' object has no attribute 'create_user'. Probably because create_user got renamed to create -- need to find all instances and make sure they're all changed.

Set up Slack integration

  • create Slack channel when show is published
  • edit channel name when show name or date is changed (e.g. 01-05-show)
  • send briefing message when channel is first created (can include TBDs)
  • update briefing message + send update when show details are modified
  • add/remove user from Slack channel when they join/leave a show
  • invite users to workspace when they create an account

Create a "My Shows" page

Display to show the shows a user is/has signed up for, along with performance counts and other stats.

Fix time column sorting

Clicking on the time column toggle (ascending/descending/off) in the shows table currently breaks the site.

Migrate to TypeScript

  • components/
  • contexts/
  • pages/auth-pages/
  • pages/profile-page/
  • pages/shows-page/
  • utils/
  • utils/hooks/

Add password field to profile page

Allow users to change their passwords in their user profile page. Should require users to enter their current password to authenticate in order to set new password.

Add notes field to show

Each show should also have a notes field to indicate details such as whether we should bring hong bao, scroll, monk, etc.

Add payment information for each show

Add fields for rate for each show (decimal field) + payment method (smallpositiveintegerfield with choices of cash, venmo, paypal, check). These don't need to be available on the front end, just in admin view.

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.