Git Product home page Git Product logo

trellis's Introduction

Trellis

Hits repo-size LinkedIn

A Trello Clone - Built with React, Redux, Express, and MongoDB.

Demo

Trellis-app [Deactivated]

๐Ÿ“ท Screenshots

View Screenshots

Login Login Register Register Home Home Create Board Create Board Trellis Trellis Board

GIF

Trellis-gif

Demo Video

โšก Features

  • Create, Modify and Delete boards
  • Create, Modify and Delete cards
  • Create, Modify and Delete lists
  • Move card items within lists
  • Move card items across lists
  • Ordering of list items
  • Activity log with active timestamps for each user events
  • Customize background images or color for individual boards
  • User Authentication

Installing

  1. Clone the repository
git clone https://github.com/ayushagg31/Trellis.git
cd Trellis
  1. Install dependencies
npm i && cd client && npm i
  1. Create .env file
REACT_APP_CLIENT_KEY="YOUR API KEY" // Unsplash API Key
  1. Create dev.env for development and test.env for testing purpose
cd ../config
(
echo PORT=1313
echo DATABASE_URL="MongoDB Connection String"
echo JWT_SECRET="YOUR JWT TOKEN"
echo NODE_ENV=development
) > dev.env
  1. Go into client/package.json and replace proxy with your server port
"proxy": "http://localhost:1313"
  1. Run the project
npm run trellis

ER Diagram

Trellis-ERD

Built With

Frontend

Backend

  • NodeJs - Backend framework
  • MongoDB - Database
  • Mongoose - Mongodb object modeling for node.js
  • Express - Node.js web application framework
  • Axios - Promise based HTTP client for the browser and node.js
  • Jsonwebtoken - Decode, verify and generate JWT.
  • bcryptjs - Password hashing algorithm library
  • Supertest - HTTP APIs Testing library
  • Jest - JavaScript Testing Framework
  • sinon - Standalone test fakes, spies, stubs and mocks library

Contribute

  • Show your support by โญ the project.
  • Submit pull requests and improve the repo overall quality
  • Read Contributors guidelines before submitting a PR or creating a new issue.

trellis's People

Contributors

ayushagg31 avatar colinfrick avatar dependabot[bot] avatar harsh7oct avatar jacubsmith avatar jeffslofish avatar jocruz-dev avatar toshiuk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

trellis's Issues

Improve Landing Page

There can be many possibilites to improve the landing page section, make it more friendly to first timers

  • Add recent activities info
  • Basic dummy read only board

Share your thoughts on this, it'll be an interesting functionality to create.

Containerize the project

Idea:
I am thinking of containerizing the project

Why?
Suppose as a user if I am only interested in running the application and not making changes
then I can run this as is without installing anything apart from docker

Remove the Footer with from the landing page.

  • Remove present footer on landing with author name and repository link.
  • Add a section instead which redirects to Github repository, and show all contributors info.
  • Show your creativity, I'll be happy to follow the lead here.

image

Feature - Categorize the boards

Allow user to categorize the board into different groups like Personal, Project, Favourites.
Let me know your ideas about this.

Fixing typo in readme files

Overview Description

Steps to Reproduce

  1. Open README or CONTRIBUTING.
  2. Scroll to the section explaining how to make a dev.env for development.
  3. Wrong command specified.

Actual Results

mkdir dev.env - which will create a directory.

Expected Results

touch dev.env - which will create a file.

Additional Information:

Have also added an echo command to populate the file.

Feature Request - Add quick tour section on Landing Page

Description A Quick tour which provides the overview of complete website

Information to add

  • Provide information about the project
  • Information about it's present features
  • Reference to Github Repository
  • List of all it's contributors [optional]
  • Future features we are working on

Containerize Project

Idea:
I am thinking of containerizing the project

Why?
Suppose as a user if I am only interested in running the application and not making changes
then I can run this as is without installing anything apart from docker

Alert messages on Login and Register form are persistant even after switching pages.

Steps to Reproduce

  • Create alert on Login page, either by typing wrong password, non-existing user info, etc. An alert will be displayed with corresponding message
  • Switch to Register Page by clicking the Register button in the header section
  • Now switch to Login Page by clicking the Login button in the header section.
  • Alert message still being displayed.

Expected Behaviour

  • Alert message shouldn't be displayed once user has switched pages.

Setup the eslint for whole project

  • Setup eslint for React app
  • Create .eslintrc file
  • Add rule set, I'll be providing few rule set soon
  • Update Package.json with lint (initialize eslint for the project) and lint-fix (fix the linting issues)

Note - Submit your changes to develop branch for now. I'll be reviewing it on priority.

I should be able to create new lists and cards by hitting the "enter" key instead of having to press the button every time

Is your feature request related to a problem? Please describe.
I am frustrated when I am trying to quickly create new lists and cards and I have to move my hands from the keyboard to the mouse to click the button to add a new list or card.

Describe the solution you'd like
It would be great if instead of creating a new line, pressing enter would just create the list or card as if I pushed the button. This is how Trello works as well.

I can work on this if you assign it to me

Create react app eslint config not working

Describe the bug
CRA provides ESLint rules with it, but due to some reasons, it's not suggesting about warning/errors.

To Reproduce
Steps to reproduce the behavior:

  1. Run Project
  2. Go to Trellis home page
  3. Now you'll see some warnings related to eslint-config-react-app

Screenshots
image

Probable Causes

  • Some eslint dependencies are not installed
  • Existing dependencies are not compatible with CRA

Fix linting errors

Describe the bug
Based on adding the linting fix to the PR workflow there is a number of sytnax errors that need to be fixed for the tests to pass successfully. These linting issues are mainly stylistic but cannot be fixed automatically.

To Reproduce
Steps to reproduce the behavior:

  1. From root direction run npm run lint:all.
  2. Fix all errors until tests pass.

Expected behavior
Linter should run without reporting any errors.

Additional context

/Users/jakesmith/Projects/open-source/Trellis/client/src/components/Activities.js
  41:9  error  Unexpected var, use let or const instead  no-var

/Users/jakesmith/Projects/open-source/Trellis/client/src/components/Auth.js
   93:13  error  A form label must be associated with a control  jsx-a11y/label-has-associated-control
  102:13  error  A form label must be associated with a control  jsx-a11y/label-has-associated-control
  112:17  error  A form label must be associated with a control  jsx-a11y/label-has-associated-control

/Users/jakesmith/Projects/open-source/Trellis/client/src/components/Background.js
   71:9   error  Visible, non-interactive elements with click handlers must have at least one keyboard listener  jsx-a11y/click-events-have-key-events
   71:9   error  Static HTML elements with event handlers require a role                                         jsx-a11y/no-static-element-interactions
   83:9   error  Visible, non-interactive elements with click handlers must have at least one keyboard listener  jsx-a11y/click-events-have-key-events
   83:9   error  Static HTML elements with event handlers require a role                                         jsx-a11y/no-static-element-interactions
   99:13  error  Visible, non-interactive elements with click handlers must have at least one keyboard listener  jsx-a11y/click-events-have-key-events
   99:13  error  Static HTML elements with event handlers require a role                                         jsx-a11y/no-static-element-interactions
  111:13  error  Visible, non-interactive elements with click handlers must have at least one keyboard listener  jsx-a11y/click-events-have-key-events
  111:13  error  Static HTML elements with event handlers require a role                                         jsx-a11y/no-static-element-interactions
  113:20  error  Do not use Array index in keys                                                                  react/no-array-index-key

/Users/jakesmith/Projects/open-source/Trellis/client/src/components/Board.js
   63:3   error  Unexpected var, use let or const instead     no-var
  109:27  error  'id' is already declared in the upper scope  no-shadow
  135:5   error  Unexpected var, use let or const instead     no-var

/Users/jakesmith/Projects/open-source/Trellis/client/src/components/BoardHeader.js
  34:7  error  Visible, non-interactive elements with click handlers must have at least one keyboard listener  jsx-a11y/click-events-have-key-events
  34:7  error  Static HTML elements with event handlers require a role                                         jsx-a11y/no-static-element-interactions

/Users/jakesmith/Projects/open-source/Trellis/client/src/components/Boards.js
  149:17  error  Visible, non-interactive elements with click handlers must have at least one keyboard listener  jsx-a11y/click-events-have-key-events
  149:17  error  Static HTML elements with event handlers require a role                                         jsx-a11y/no-static-element-interactions
  168:15  error  Visible, non-interactive elements with click handlers must have at least one keyboard listener  jsx-a11y/click-events-have-key-events
  168:15  error  Static HTML elements with event handlers require a role                                         jsx-a11y/no-static-element-interactions

/Users/jakesmith/Projects/open-source/Trellis/client/src/components/Card.js
  83:21  error  Assignment to property of function parameter 'task'  no-param-reassign

/Users/jakesmith/Projects/open-source/Trellis/client/src/components/Footer.js
  4:31  error  'theme' is defined but never used  no-unused-vars

/Users/jakesmith/Projects/open-source/Trellis/client/src/components/List.js
  131:5   error  Assignment to property of function parameter 'column'                                           no-param-reassign
  148:17  error  Visible, non-interactive elements with click handlers must have at least one keyboard listener  jsx-a11y/click-events-have-key-events
  148:17  error  Static HTML elements with event handlers require a role                                         jsx-a11y/no-static-element-interactions
  205:21  error  'provided' is already declared in the upper scope                                               no-shadow
  208:43  error  'index' is already declared in the upper scope                                                  no-shadow

/Users/jakesmith/Projects/open-source/Trellis/client/src/components/Notice.js
  34:7  error  Missing an explicit type attribute for button  react/button-has-type

/Users/jakesmith/Projects/open-source/Trellis/client/src/ordering/ordering.js
   2:3   error  Unexpected var, use let or const instead          no-var
   3:3   error  Unexpected var, use let or const instead          no-var
   4:3   error  Unexpected var, use let or const instead          no-var
   6:26  error  Unary operator '++' used                          no-plusplus
  16:47  error  Unary operator '++' used                          no-plusplus
  28:13  error  Unexpected assignment within a 'while' statement  no-cond-assign
  28:53  error  Unary operator '++' used                          no-plusplus

/Users/jakesmith/Projects/open-source/Trellis/client/src/reducers/activityReducer.js
  16:7  error  Unexpected lexical declaration in case block  no-case-declarations
  17:7  error  Unexpected lexical declaration in case block  no-case-declarations

/Users/jakesmith/Projects/open-source/Trellis/client/src/reducers/boardReducer.js
  42:7  error  Unexpected lexical declaration in case block  no-case-declarations
  43:7  error  Unexpected lexical declaration in case block  no-case-declarations
  55:7  error  Unexpected lexical declaration in case block  no-case-declarations
  56:7  error  Unexpected lexical declaration in case block  no-case-declarations

/Users/jakesmith/Projects/open-source/Trellis/client/src/reducers/cardsReducer.js
  16:7  error  Unexpected lexical declaration in case block  no-case-declarations
  17:7  error  Unexpected lexical declaration in case block  no-case-declarations
  23:7  error  Unexpected lexical declaration in case block  no-case-declarations
  24:7  error  Unexpected lexical declaration in case block  no-case-declarations

/Users/jakesmith/Projects/open-source/Trellis/client/src/reducers/imageReducer.js
  9:7  error  Unexpected lexical declaration in case block  no-case-declarations

/Users/jakesmith/Projects/open-source/Trellis/client/src/reducers/listsReducer.js
  16:7  error  Unexpected lexical declaration in case block  no-case-declarations
  17:7  error  Unexpected lexical declaration in case block  no-case-declarations
  23:7  error  Unexpected lexical declaration in case block  no-case-declarations
  24:7  error  Unexpected lexical declaration in case block  no-case-declarations

/Users/jakesmith/Projects/open-source/Trellis/client/src/routers/AppRouter.js
  27:9  error  'token' is already declared in the upper scope  no-shadow

/Users/jakesmith/Projects/open-source/Trellis/client/src/store/configureStore.js
  22:5  error  Assignment to function parameter 'state'  no-param-reassign

Add pre-commit workflow

Is your feature request related to a problem? Please describe.
To keep code quality tight and to ensure commits are formatted correctly we should run the linter before a commit.

Describe the solution you'd like
Add a pre commit workflow to perform the checks

Feature - Add labels on the cards

  • Labels can be of any predefined color with a text associated with them.
  • It can be used to easily categorize the Cards within a list.

There should be a confirmation dialog before a board, list, or card is deleted

Is your feature request related to a problem? Please describe.
It is possible to accidentally hit the delete button for a board, list, or card. It would be nice if the item wasn't immediately deleted when the button is pressed, but instead, a confirmation dialog is shown.

Describe the solution you'd like
I want a confirmation dialog to appear after clicking a delete icon for a board, list, or card. After pressing a "conform delete" button on the dialog, only then would the item be deleted.

Describe alternatives you've considered
Instead of a delete button with a confirmation dialog, there could instead just be an "archive" button that doesn't permanently delete the item. Additional functionality would have to be added to recover an archived item.

Create server folder structure

I think we could create a server folder and inside it, save the config server, the middlewares, the routes, the schemas

Add workflow for linter check in PR's

To make sure that the code in the master branch has the proper style, we need to put in place a basic pipeline, using GitHub Actions, for running linting checks on the javascript code

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.