Skip to content

hhkbhamza/CTP-CUNYSphere

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CunySphere

Team Name & Project Name

Project Name: CUNYSphere
Team Name: CUNYCrafters

Team Members

Dahyeon Park, Benjamin Zhang, Omar Abdullah, Amir Hamza

Built With

Next Node Express Bcrypt.js JavaScript HTML CSS React Git Sequelize Passport Postgre Firebase Bootstrap AWS Render Visual Studio Code Framer

Back to top

Screenshot 2024-05-07 234507 Screenshot 2024-05-08 000856 Screenshot 2024-05-08 001003 Screenshot 2024-05-08 001206 Screenshot 2024-05-08 001314

Executive summary

A summary of your project
In today’s vast digital landscape, students often face challenges in sourcing reliable academic resources and engaging with peers who share their educational pursuits. CUNYSphere is designed to address these challenges by serving as a comprehensive platform for students. Here's how it works:

What does the application do?

CunySphere provides a two-fold service approach for students. Firstly, it offers a selection of vetted academic resources, assisting students in their studies. Secondly, it creates a dedicated space for students to interact, discuss, and collaborate on academic topics.

What is the motivation for your application?

The driving force behind CUNYSphere is to address the existing gap in the market. Students often find themselves switching between platforms that are either off academic resources or community engagement. CUNYSphere aims to streamline the student experience by seamlessly integrating both aspects into a single platform.

Which types of people would want to use this application?

CUNYSphere is tailored specifically to college students, particularly those within the CUNY system. However, it can also benefit high school students who are considering attending CUNY college in the future.

Are there similar applications and/or competitors available now? How does your idea differ? or why is there a need for a competitor?

While there are existing platforms like CourseHero and CollegeConfidential that cater to student needs, they tend to address only one aspect of the student experience. CourseHero primarily focuses on providing study materials, while CollegeConfidential emphasizes student discussions. CUNYSphere sets itself apart by integrating academic resources with a vibrant community, offering students a holistic experience. This unique combination makes CUNYSphere a necessary addition to the current market.

Roles:

Students

  • Access and download study materials, initiate or participate in discussions, create study groups, rate and review resources, see the latest news about CUNY, upload your resume for review.

Administrators

  • User management, such as adding or removing users and assigning roles, addressing major technical glitches, managing partnerships or integrations, overseeing the overall functioning of the platform.

User Stories:

As a student, I want to…
easily register and create a profile so that I can access study resources. search and download relevant study materials so that I can prepare for my exams. join or initiate discussions on topics I'm interested in so that I can understand concepts better. rate and review resources so that others can benefit from my feedback and make informed choices create or join study groups so that I can collaborate with peers.

As an administrator, I want to…
manage user accounts, assigning roles and permissions so that the platform runs smoothly. handle technical issues and oversee updates so that the platform remains up-to-date and bug-free. analyze user activity and platform performance so that necessary improvements can be implemented.


Project Structure

.
├── README.md
├── api
│   ├── app.js
│   ├── config
│   │   └── config.json
│   ├── controllers
│   │   ├── index.js
│   │   └── microPosts.js
│   └── models
│       ├── MicroPost.js
│       └── index.js
├── client
│   ├── README.md
│   ├── package-lock.json
│   ├── package.json
│   ├── public
│   │   ├── favicon.ico
│   │   ├── index.html
│   │   ├── logo192.png
│   │   ├── logo512.png
│   │   ├── manifest.json
│   │   └── robots.txt
│   └── src
│       ├── App.css
│       ├── App.js
│       ├── components
│       │   ├── ErrorAlert.js
│       │   ├── LoadingSpinner.js
│       │   └── MicroPostCard.js
│       ├── index.js
│       └── pages
│           ├── AboutUsPage.js
│           ├── PostFormPage.js
│           ├── PostsListPage.js
│           └── ShowPostPage.js
├── package-lock.json
└── package.json

Current version: 3.0.0 (Oct 2023)

Stack

Node.js v16 LTS is recommended

Backend API

  • express.js (v4.18.2)
  • sequelize.js (v6.33.0)
  • PostgreSQL (v14 recommended)

Frontend React client

  • Based on create-react-app
    • pre-configured to work with the api
  • Bootstrap (v5)
    • added to /client/public/index.html (optional can be removed)
  • React Router (v6)

Development Setup

Ensure you have PostgreSQL installed

  • Check if you have PostgreSQL installed
    • ✅ versions 10-14 should work
    • 🚫 version 15 has not been tested
  • If you need to install PostgreSQL see the installing PostgreSQL guides

Create a PostgreSQL user and database

The project-starter template expects the following for local development:

  • PostgreSQL User/Role
    • name: ctp_user
    • password: ctp_pass
  • PostgreSQL Database
    • name: ctp_appdb_development

For Windows/pgAdmin users

If you are on Windows and installed pgAdmin follow our pgAdmin guide to create a user in PostgreSQL named ctp_user with the password ctp_pass and a database named ctp_appdb_development.

For Mac/Linux users

Create a user in PostgreSQL named ctp_user with the password ctp_pass:

This only needs to be done one time on your machine You can create additional users if you want to.

createuser -P -s -e ctp_user

Create a separate db for this project:

createdb -h localhost -U ctp_user ctp_appdb_development

You will create a DB for each project you start based on this repo. For other projects change ctp_appdb_development to the new apps database name.


Running the app locally

For local development you will need two terminals open, one for the api-backend and another for the react-client.

Clone this app, then:

# api-backend terminal 1
cp .env.example .env
npm install
npm run dev
# react-client terminal 2
cd client
npm install
npm start

In production you will only deploy a single app. The react client will build into static files that will be served from the backend.