GithubHelp home page GithubHelp logo

raissa-k / easy-classrooms Goto Github PK

View Code? Open in Web Editor NEW
3.0 1.0 0.0 539 KB

An easy-to-use solution to share assignments with students, even those who don't want to register to follow along class.

Home Page: https://easy-classrooms.raissak.com

License: MIT License

Shell 0.16% JavaScript 34.77% CSS 0.27% EJS 64.79%
ejs-express javascript mongodb mongoose nodejs

easy-classrooms's Introduction

Easy Classrooms

An easy-to-use solution to share assignments with students, even those who don't want to register to follow along class.

Read more about the process of building it here

Table of Contents

Links

To avoid signing up, you may log in with the following credentials:

[email protected] // testtest

To view an example class without loggin in, try this classroom password in the landing page:

metropolitan-Cherice-sheep

Screenshots

Screenshots

Landing page

screenshot of the landing page

Home page (teacher view)

screenshot of the home page

Home page (student view)

screenshot of the home page

Classroom management (dark mode)

screenshot of classroom management page

Lesson (enrolled student view)

screenshot of lesson page as viewed by a student

Gif animation of navigation through project

Tech Stack

Client: JavaScript, HTML, EJS, TailwindCSS

Server: Node, Express, MongoDB/Mongoose

Features

  • Secure login with Passport Auth'
  • Cache for external API calls to Unsplash
  • Uploads pictures to Cloudinary or retrieves a random one if Classroom creation form is left empty
  • Light and dark mode toggle
  • Prompts and mobile menu are contained in accessible modals
  • Responsive for desktop & mobile
  • Users may access a classroom using its specific classroom password
  • Users don't need to log in to access a classroom or lessons, but their usage is limited
  • Students who are logged in and enrolled into a classroom can leave comments in lessons and track lesson completion

Run Locally

Clone the project

  git clone https://github.com/raissa-k/easy-classrooms.git

Install dependencies

  npm install

Start the server

  npm run dev

Environment Variables

To run this project, add the following environment variables to your .env file in /config/.env

A .env.example file is supplied inside the config folder.

DB_STRING= (MongoDB)
PORT= (any of your choosing)
CLOUD_NAME= (from Cloudinary Programmable Media)
API_KEY= (from Cloudinary Programmable Media)
API_SECRET= (from Cloudinary Programmable Media)
UNSPLASH_CLIENT_ID= (from Unsplash Image API)

Lessons Learned

  • In this project, it turned out to be simpler to create an Enrollment model schema rather than integrate students, classrooms and lessons directly. Less turned out to be more.
  • Rendering a classroom using EJS while taking into account the enrollment status and user authentication was a fun challenge which would have been made much easier with front end libraries such as React.
  • When it comes to text, CSS text-transform: uppercase also directly affects the element, and so adding aria-labels to buttons might seem like extra work but cannot be skipped.
  • While I did choose a pre-made color theme which looked fine at first, it turned out to not generate the sufficient contrast in some elements so I had to add further customization.

Roadmap

  • Rebuild with React
  • Add different authentication methods
  • Enable password change and recovery
  • Add lesson editing
  • Replies to comments inside a lesson
  • Integration with calendar
  • Add button to share classroom directly
  • Comments on lessons
  • Lessons can be marked complete
  • Add classroom password protection
  • Users may view classroom and lesson without logging in

Author

Raissa K.

easy-classrooms's People

Contributors

raissa-k avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

easy-classrooms's Issues

Allow user to enroll in a class

Enrollment requires being logged in and accessing the classroom by password, OR accessing the classroom by password and then logging in from there

After enrollment, password is no longer necessary to access a classroom

Fix bug when accessing a classroom and not logged in

When accessing a classroom via landing page form input, the form in the comments section still shows.
Users who are not logged in and enrolled are not supposed to be able to see or interact with this form.

Allow user to create lessons inside classroom

Able to create lesson from profile, link to classroom
Create lesson in classroom
Includes:

  • Date
  • Title
  • Assignment
  • Links to (optional) files
  • Optional picture
  • Linked:
    • User who posted (teacher)
      • Teacher picture
      • Teacher name
      • Link to teacher profile
    • Classroom
    • Comments
      • User who commented
        • User picture
        • User name
        • Link to user profile

Fix visual issues

  • Add padding to home page no-enrollment message.
  • Adjust the message in profile page "cancel enrollments" if there is no enrollment.
  • Add icon to lesson link in the lesson title table for users not logged in.

Use a random name generator for Classrooms

Currently, the classroom access name generated during creation is a string of random letters and numbers. This is not user-friendly.
Use a random name generator for classrooms so that the access name is easier to remember and write.

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.