GithubHelp home page GithubHelp logo

trestres / ontheplate Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 124 KB

Task management with my attention patterns in mind

JavaScript 90.90% HTML 4.22% CSS 4.88%
express graphql material-ui mongodb node react

ontheplate's People

Contributors

trestres avatar

Stargazers

 avatar

Watchers

 avatar  avatar

ontheplate's Issues

Use Google Calendar API to allow deadline migration

This is going to be rather tricky.

  1. Figure out how to connect to GAPI
  2. Determine if events can be displayed in calendar format upon query or if we can only guarantee a migration
  3. Check data that is required for mapping
  4. Since GAPI uses REST framework, determine if batching is appropriate

Add password validation on the front-end

Currently the new user form only needs the password to be entered once
image

New passwords should be entered twice with some backing logic to confirm both entries are the same.

Narrow down scope of search filtering

In GraphQL, Filters contain one or more Filter Groups
A Filter Group contains one or more Filter Conditions

We expect a user to save a filter in order to search lists, so we don't expect to actually use a Filter Group. There can however, be several filter conditions.

Users will:
-navigate to the searches page
-customize a filter using the UI
-have the option to run, save, edit, or discard the filter

When they save the filter, FilterConditions objects should be created and stored as info into the new Filter object. The entire Filter object is what's saved to the database, including the FilterConditions within. The conditions aren't expected to be reusable.

[FEATURE] Responsiveness

Is your feature request related to a problem? Please describe.
This should be phone-accessible to some extent and we shouldn't make the same mistakes we did with previous static sites

Describe the solution you'd like
First, some fidelity mockups of the mobile version are probably in order (contingent on desktop front end design)

Material-UI has ways of harnessing the size of the screen for a CSS baseline (I think it's even a Component) that can be used to present components on different kinds of screens

Describe alternatives you've considered
Bootstrap...is eh....?

Additional info
Add any other necessary info/reference material here.

[CODE] Different resolvers are doing the same data transformations

Describe the issue or provide a code snippet
image
In resolvers/list.js and others, we're doing the same thing over and over to the data models retrieved from the database, e.g. transforming date objects into ISO formatted strings

Pitfalls to this approach
We're repeating ourselves multiple times, and we're likely going to screw up and provide inconsistent data at an endpoint

Suggested Fix
There may be a library that can take care of this, or more likely, we can write a module that handles data transformations from all resolvers, as a single source to handle mapping query results to JSON objects correctly.

Estimation of effort
This is a small to medium scale effort since it affects nearly all resolvers in lists.js, merge.js, and users.js. Conceptually, it shouldn't be difficult.

[CODE STYLE] Use SASS to support a refined UI

Describe the issue or provide a code snippet
This is self-evident. CSS was great in the beginning but now the prototype needs to start handling styles better. Nesting and mix-ins will be a big thing here.

Estimation of effort
We have roughly 6 different CSS files, so maybe an hour to replace everything with the current visual state as is.

[VISUAL]

Current look of the project
image
image

Why it can be better:
Our shared components look very bland and are concocted using a mixture of vanilla CSS and material-ui. This is fragile and does not take advantage of themeing

Suggested change
When doing a visual pass, make sure that these are addressed.

Add specific CRUD for end users

with auth:
update user info
delete a user
get all the lists for a user
get all the tasks for a user
update a list
delete a list (deletes all tasks within)
update a task
delete a task

[BUG] Token from login is not persistent

Describe the bug
Reloading the page after login destroys the token and sends the user back to the login screen

To Reproduce
See description

Expected behavior
We have a token expiration time and make the token persist until that time has lapsed

What can we use for safe persistence in local storage?

[VISUAL] Add page transitions

Suggested change
We can use a sliding/overlay mechanism to transition between pages, with the nav bar acting as a track, instead of suddenly blinking to the content.

Refactor the backend code to leverage graphql api

https://graphql.org/graphql-js/type/#graphqlschema

We should leverage the API to make extensibility easier:

  1. Instead of using template literals for schema, use constructors to create types
  2. Resolvers should be split into files for functional areas, and then collated in graphql/resolvers/index.js
  3. We can use the power of template literals/text on the other hand to define enums in one place for mongoose models and graphql types alike

There's likely to be some sort of other piece that would allow us to generate mongoose models and graphql types from a singular endpoint, but that is a lot of nuance we may not need

Upgrade to Auth0

Now that we know that the authorization workflow works using our middleware, we should upgrade to Auth0

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.