Skip to content

Commit

Permalink
Setup NPM Workspaces and Simplify Install (#232)
Browse files Browse the repository at this point in the history
* Added npm workspaces and cleaned up install process

* Update README.md

* Update README.md

* Add about section

* Update README.md
  • Loading branch information
nilsstreedain authored May 24, 2024
1 parent 07e1c60 commit 0b48edb
Show file tree
Hide file tree
Showing 8 changed files with 25,843 additions and 168 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
/server/coverage

# production
/build
/client/build
/server/dist

# misc
Expand Down
59 changes: 49 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,54 @@
# Open-Source Classroom Polling Software
This project will develop a free, open-source, classroom polling website. Once developed, the project will be used in OSU classrooms and shared with instructors around the world. This project will include front end and back end web development, a Canvas / LMS interface, and responsive user interface development for live polling and advanced question formats on desktop, mobile, and other devices. Stretch goals include an intelligent grouping algorithm to pair students based on answers, tracking of students to give feedback to instructors, and an in-class social network for just-in-time Learning Assistant interventions.
## About
The Open-Source Classroom Polling Project seeks to simplify the interactive side of the educational experience, through the development of a free-to-use web-based polling system. Addressing the shortcomings of existing polling software, this project emphasizes affordability, responsiveness, and enhanced interactive capabilities suitable for today’s classrooms. The app aims to deliver a solution that fosters real-time engagement, collaborative learning, and seamless integration with educational platforms.

## Objectives
Website interface, student/teacher login, and tracking of student grades, class questions, course lectures Live polling interface Bi-directional Canvas communication Intelligent grouping algorithm (stretch) Instructor feedback interface (stretch) In-class social network (stretch)
Read more about MyClassroom on the [MyClassroom website](https://osu-mc.github.io).

## Motivations
Currently, the only non-tuition cost for students in the Physics 20x sequence at OSU is an old, but necessary polling software. There are free alternatives available, but none feature intelligent grouping, and most are limited in question types. This project will provide a free option for teachers around the world, as well as an open-source starting point for developing more features. This project will save OSU students more than $6000 each year. It will also provide a more flexible, fully featured and integrated software.
## Dependencies
- npm: 10.7.0
- node: 22.2.0
- docker: 24.0.9

## Qualifications
### Minimum Qualifications:
Website development experience (full stack, or client side, or server side) Problem solving skills Excellent communication skills Excellent teamwork skills
## Get Started!
### Download/Install
Install Docker
- Refer to the [Get Docker Guide](https://docs.docker.com/get-docker/) for installing and setting up Docker. Docker Desktop is recommended for simplifying local development.

### Preferred Qualifications:
Learning Management System integration Algorithms
Clone the GitHub repository:
```
git clone git@github.com:OSU-MC/MyClassroom.git
```

Navigate to the cloned repository:
```
cd MyClassroom
```

Install the application dependencies:
```
npm install
```

### Configure Environment
Configure the local environment:
```
npm run config
```
- Modify `/server/.env` to update the MyClassroom Server configuration.
- Modify `/client/.env` to update the MyClassroom Client configuration.

### Start MyClassroom Application
Start MyClassroom using the following command:
```
npm run start
```

### Stop MyClassroom Application
Press **Ctrl+C** to stop the server and shut down the Docker container.

## Development info
### Client
For more info about developing for the frontend client, visit [client/README.md](https://github.com/OSU-MC/MyClassroom/tree/dev/client)

### Server
For more info about developing for the backend server and database, visit [server/README.md](https://github.com/OSU-MC/MyClassroom/tree/dev/server)
47 changes: 18 additions & 29 deletions client/README.md
Original file line number Diff line number Diff line change
@@ -1,49 +1,38 @@
# Frontend: Open Source Classroom Polling Software (MyClassroom)
## Motivation
The Open Source Classroom Polling Software, or My Classroom, was designed to solve a very specific problem: a lack of free, individually tailored, classroom polling tools for students and professors. The inception of this project was problems with current polling software used in Oregon State University's Intro Physics program. These courses use Learning Catalytics; a polling software from Pearson. The cost of this software is not included in the student's tuition, so students have to pay for it out of pocket. My Classroom provides students with an alternative classroom tool that is equal in functionality but at no additional cost to the student.

With My Classroom, instructors and students can participate in interactive question and answer sessions. Professors can create courses, create lectures for those courses, and add questions within those lectures that students can answer. Student responses are saved so that both the professor and their students can track their comprehension of course material. The idea is to provide a service through which teachers can get a sense of what their students need, and students can get a sense of what they need to learn.
# MyClassroom Client
## Update Client Configuration
Modify `/client/.env` to update the MyClassroom Client configuration. The `REACT_APP_API_URL` environment variable should be set to the MyClassroom Server URL. For basic testing, the default values can be used.

## Dependencies
- node: 16.13.0
- npm: 9.1.2
## Setup Application for Client Development
This guide is specifically for local development of the MyClassroom Client. You may prefer to use the main [README.md](../README.md) install/setup instructions for other deployments.

## Setup Server Application and Install Dependencies
Setup the server application according to the [/server/README.md](../server/README.md#cloning-repo-and-installing-dependencies) documentation.
Install and configure the Application according to the steps in the main README.md but do not start the application. Then run the following from the root directory.

Navigate to the client folder
### Start Server and Client
Start the MyClassroom Server with Docker:
```
cd client
npm run server
```

Install the Application Dependencies
Start the local development version of the MyClassroom Client:
```
npm install
npm run start -w=client
```

Rename the .env.example file to configure the environment
```
mv .env.example .env
```

## Configuring Node.js Client
The client can be configured by modifying the `/client/.env` file. `REACT_APP_API_URL` should be set to the backend URL. For basic testing, the default values can be used.
```
nano .env
```
### Stop Server and Client
The MyClassroom Client can be stopped by pressing **Ctrl+C** while the process is running in the shell.

## Starting the Application
```
npm run start
The MyClassroom Server can be stopped using the command:
```
npm run stop
```

## Tasks For Future Teams / Build Status
- [ ] Hosting
- [ ] Live Polling Using The Hosting
- [ ] Student / Instructor Gradebooks
- [ ] Instructor Grade Statistics
- [ ] Multiple Question Types
- [ ] Deleting / Editing Existing Courses, Sections, Questions, Lectures (Backend Finished)
- [ ] Deleting / Editing Existing Courses, Sections, Questions, Lectures (Server Finished)

## Organization
```bash
Expand All @@ -70,7 +59,7 @@ npm run start
- Redux
- Javascript

# Interacting With the Database
## Interacting With the Database
![Schema](https://github.com/OSU-MC/MyClassroom/assets/25465133/a4322ae3-b9b7-4b2f-98fb-116614e381d7)

```
Expand Down
8 changes: 6 additions & 2 deletions client/package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "alert",
"name": "@myclassroom/client",
"version": "0.1.0",
"private": true,
"dependencies": {
Expand All @@ -18,11 +18,15 @@
"react-router-dom": "^6.23.1",
"react-scripts": "^5.0.1",
"react-table": "^7.8.0",
"redux": "^5.0.1"
"redux": "^5.0.1",
"serve": "^14.2.3"
},
"scripts": {
"config": "cp .env.example .env && nano .env",
"start": "react-scripts start",
"build": "react-scripts build",
"serve": "serve -s build",
"deploy": "react-scripts build && serve -s build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
Expand Down
Loading

0 comments on commit 0b48edb

Please # to comment.