Code Monkey home page Code Monkey logo

cs35l-egg's Introduction

CS35L Egg Editor

Egg Editor is a community based Markdown editor, built with the MERN stack.

alt text

Table of Contents

Features

  • Profile page: Users can create their accounts using either email password or Google OAuth. They can also view file created by the user, files like by the user, and edit user name.
  • Edit page: Users can edit markdown files with LaTeX support. There is also a menu bar at the top of the page, which contains many useful features and shortcut keys, such as undo/redo, bold, italics, math...
  • File management: Users can create new files, browse existing files, delete files, and search file content. Users can also toggle file visibility between public and private.
  • Community interaction: Users can like and comment on other users' files. They can also view the specifics of each file.

Technologies

  • Frontend: JavaScript, React, Tailwind CSS, ShadCN UI, React-Router, React-Markdown
  • Backend: Node.js, Express, MongoDB, Mongoose, Passport, Swagger

Installation

Follow these steps to install and run this project:

Clone the repository

git clone [email protected]:sonnyding1/CS35L-Egg.git

Navigate to the directory

cd CS35L-Egg

Install the dependencies

Starting from this step, you will need to open two terminal windows, one for the backend and one for the frontend. For all the backend commands, you will need to navigate to the backend directory. For all the frontend commands, you will need to navigate to the frontend directory.

For the backend:

cd backend
npm install

For the frontend:

cd frontend
npm install

Set up the environment variables

If you are a contributor, visit our Google Drive to get the .env files for frontend and backend. If you are not a contributor, you will need to create your own .env files. The backend .env file should be placed in the backend directory, the frontend .env file should be placed in the frontend directory.

For the backend:

GOOGLE_CLIENT_ID=[your Google client ID from Google Cloud Platform]
GOOGLE_CLIENT_SECRET=[your Google client secret from Google Cloud Platform]
SESSION_SECRET=[your session secret]
MONGO_URI=[your MongoDB URI]

Run the project

For the backend:

npm run dev

For the frontend:

npm run dev

Authors

Egg Editor is developed by a group of UCLA students in CS35L Spring 2024. The contributors are:

  • Sonny Ding
  • Thiha Myat
  • Taha El-Halabi
  • Wai-Sann
  • Emily Pham
  • Gabriel Jiang

cs35l-egg's People

Contributors

sonnyding1 avatar tm-cs avatar tahaelhal avatar gonfreecs17 avatar caprikioq avatar empham1 avatar

Stargazers

 avatar

Watchers

 avatar  avatar

cs35l-egg's Issues

[feature] landing page

Optionally, we can have a landing page for all logged out users to see. The landing page should contain a hero section, some sections that display our features, and a call to action section that redirects users to visit the community page, and also prompt them to sign up or log in.

[fix] nav bar rework

We can make the nav bar buttons uniform, move "Egg" to the left to make space for the user profile on the right.

[feature] Editable file name

Make a file name in edit page, and make that file name editable. For now, save the file name in a useState, and on save to a local file, save the file using that file name.

[feature] add undo/redo shortcut keys

Implement undo/redo shortcut keys in edit page. This might be more complicated than it seems, we might have to implement a "kill ring" of some sort along with the shortcut keys. Also, when a user deletes 3 words by pressing and releasing delete key 2 times, does that count as 1 operation that can be undone? We might need to look into how to determine what exactly is 1 operation.

[feature] comment API endpoints

CRUD operations for the comment model, including:

  • create a new comment
  • get all comments of a file
  • update a comment
  • delete a comment

[feature] nav bar user profile

Have a circular user profile if the user is logged in. On clicking the profile, it opens a dropdown that shows options for "profile" which links to a profile page, and "logout" which calls the logout function from the backend. If the user is not logged in, display 2 buttons, log in and sign up, respectively.

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.