Giter VIP home page Giter VIP logo

encephascape's Introduction

Encephascape is a single page web application "BrainScape" clone where users can create, bookmark, and study stacks.


Table of Contents



Usage

To launch EncephaScape in a development environment:

  1. cd backend and create a .env based off .env.example. Fill in the newly created .env file with your PSQL user and database credentials.

  1. Install dependencies in both backend and front-end directories

    • cd backend && npm install
    • cd frontend && npm install

  1. In the /backend folder run the following command to create, migrate, and seed the database.

    • npx dotenv sequelize db:create && npx dotenv sequelize db:migrate && npx dotenv sequelize db:seed:all

  1. Run the following two commands from the root folder each on seperate terminal windows:

    • cd backend && npm start
    • cd frontend && npm start

  1. Navigate to http://localhost:3000/ to interact with the EncephaScape app!


Technologies and Libraries Used

Server (Node.js)

  • Sequelize ORM
  • PostgreSQL
  • Express
  • bcrypt

Client (Javascript)

  • React
  • Redux
  • Material UI
  • Lodash


MVP Feature List

1. Sign up, log in, log out, and demo-user login.

  • Users can sign up, log in, and log out.
  • Users can login as demo-user to interact with the application.
  • Authenticated users can navigate to their Brainfolio which displays their bookmarked stacks and created stacks.
  • Authenticated users can navigate to Profile which allows them to update their username, email, and password.

2. User stacks.

  • Users can play stacks to study their associated questions.
  • Authenticated users can create stacks with an associated category and questions.
  • Authenticated users can bookmark, edit, and delete their own stacks.

3. User bookmarks.

  • Authenticated users can bookmark other users stacks as well as their own.
  • Authenticated users can remove their bookmark from other users stacks as well as their own.

3. Search stacks.

  • Users can search stacks by name and/or category on the Stacks page.


Server (backend) API Routes

Session

POST /api/session

GET /api/session

DELETE /api/session


Users

POST /api/users

DELETE /api/users


Categories

GET /api/categories


Stacks

GET /api/stacks

POST /api/stacks

GET /api/stacks/:stackId

DELETE /api/stacks/:stackId

GET /api/stacks/features/random

GET /api/stacks/features/search


Bookmarks

GET /api/bookmarks

POST /api/bookmarks

DELETE /api/bookmarks/:bookmarkId


Cards

POST /api/cards

DELETE /api/cards/:cardId

PUT /api/cards/:cardId



Client (frontend) Routes

/

This page displays a navigation bar with login/sign up modals or a user button with the option to logout. Users are able to see a list of available categories and authenticated users will be able to see and additional list containing their bookmarked stacks.


/stacks

This page displays a search bar to search for stacks along with the option to filter by category.


/stacks/:stackId

This page displays a stacks name, user, and associated questions. Answers are blurred out until a user hovers over the blurred answer.


/stacks/create

This page displays a form with a name field, category field, and question fields. Users can add additional questions before creating a stack.


/brainfolio

This page displays a users stacks and bookmarked stacks. At the top of the page is the "BrainfolioActions" component that takes a user to either a random stack or to create a stack.


/profile

This page displays a users account information and allows for the update of a users account information and/or password.



Database Schema

Users

column name data type details
id integer not null, primary key
username string not null, unique
email string not null, unique
hashedPassword binary string not null
createdAt datetime not null
updatedAt datetime not null

Categories

column name data type details
id integer not null, primary key
name string not null

Stacks

column name data type details
id integer not null, primary key
name string not null
categoryId integer not null, foreign key
userId integer not null, foreign key
createdAt datetime not null
updatedAt datetime not null

Cards

column name data type details
id integer not null, primary key
stackId integer not null, foreign key
term string not null
response string not null
createdAt datetime not null
updatedAt datetime not null

Bookmarks

column name data type details
id integer not null, primary key
userId integer not null, foreign key
stackId integer not null, foreign key
createdAt datetime not null
updatedAt datetime not null

Tests




Contact


name: Mustafa Mousa

email: [email protected]

encephascape's People

Contributors

mustafaomousa avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

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.