Giter Club home page Giter Club logo

household-chores's People

Contributors

dependabot[bot] avatar fezzzi avatar sauermar avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

household-chores's Issues

FE/BE - Translations

  • Create translations files for cs and en locales
  • Create BE endpoint serving them in response for appropriate action
  • Modify rootSaga to trigger locale loading action and store locales to state in rootReducer
  • Update FE to use state's locales to display text

Fix req.session.user corrupted after first log in

When the user gets logged in after creating an account, there are corrupted data in req.session.user (object instead of number holding user's id) making it impossible to identify this user on BE until he logs off and logs in again.

Add confirmation dialogs

Functionality

  • Create table with user x DialogType fields
  • Define dialogType values in global store and propagate to appropriate components
  • Create UI for confirmation Dialogs
  • Handle displaying of confirmation dialogs for certain actions and implement don't show again checkbox linked to the global state and the table udpate

Dialogues

  • Add dialog to household invitation confirmation to allow upload new photo or use the profile picture
  • Add dialog for invitation and connection requests to enable conditional message appending

FE - navbar

  • Create navigation bar
  • [ ] Restyle colors to use CSS custom properties and implement dark/light theme switch on navbar handled in #23
  • Add user photo to global store and fix useHouseholdButtonHandlers hooks' approveHandler to pass an actual profile picture to invitationApprove effect (would be great to put user id there as well).
  • [ ] It would be great if there would be 2 variants of navbar, thiner one with smaller logo and without photo and the full one. The full one will be displayed when on top of the page and will hide on scroll down action. Smaller one will be displayed on scroll up action until reaching the top of the page when will it transition to the full one.
  • Connect with Activity Feed
  • Connect with sign out functionality

Add mysql connection reset on error

The way it is now, the Cannot enque query after fatal error message pops-out after an error, blocking all subsequent queries from execution.

Create About page in the settings

  • About page with tabs smth. like [about, thanks, support]
  • The about page displays general information about application
  • There should also be a tab about creating custom modules
  • The thanks page lists all names of patrons from patreon
  • The support page tells general information about the dev team, provides link to patreon and a possibility to watch an add to support the team (possibly some other links to roadmap etc.)

Additional information in forms

Denote a way of displaying additional information about the option (such as what will happen when user clicks block button / information about certain notification settings / visibility / etc..)

Deleting user account

When user deletes his account:

  • Clear his fs directory of all pending files
  • Remove all households he is the only admin of that don't have any users of maintainer status
  • Shift admin status to all maintainers otherwise
  • Properly log all associated actions to activity feed
  • Also provide some further hint information to all household roles to explain their abilities and meaning

Nice to have would be to mark his account as to be deleted, send an email with a link to perform deleting instanteniously, and wait for a month otherwise and delete only if the user didn't log in in the meantime. On attempt to log in then display a pop-up saying the account is scheduled for deletion on x.y.zzzz and give an option to abort deletion.

Settings page BE functionality + FE polishing

  • Add notifications model
  • Implement functionality for the whole FE settings page
  • Denote a way of displaying additional information about the option (such as what will happen when user clicks block button / information about certain notification settings / visibility / etc..) separated to #59
  • Allow user to remove his account - Should be pretty straightforward, just check db cascades correcly (no need to clean fs as cron should do that sooner or later anyway) - done on FE, BE will be done as part of #13
  • Refactor input components and forms to use hooks
  • Refacstor existing BE form handling to stop using { value: any, valid: bool } shape of input values resolved as part of #19
  • Refactor BE to stop using ternary values and use some shapes instead resolved as part of #19

Enhance migrations

  • [ ] Wrap migrateWithQueries in Promise to get rid of all these awaits This won't actually be possible
  • Modify npm run migrate up script to produce custom template for migrations that uses migrateWithQueries

Household selection on the main page

  • Denote some nice design for this
  • Add color configuration input to each household creation and management setting page for better clarity which household is currently selected, display this color on the main page in the household selection thing
  • Might be nice as well to add some custom icon upload/select from predefined icons for each household and make it available to upload an image to the household and then display each selected household on the main page the same way resources pages are displayed (this might cause color filed to be redundant so it might be either this or that)

Use input field errors in authentication forms

There is some functionality for this as well as error icon prepared, it might be enough to modify error messages received from BE to trigger displaying of these icons i relevant input fields.

FE - themes

  • Create theme switcher button
  • Implement functionality

Brainstorm modules

Figure out how should modules work to support:

  • Dynamic addition of new models
  • Customized access privileges of module data configurable by data author
  • Sharing of module data between modules
  • Allow / Disallow sharing of household's module data with another household? (Might be simply enough to allow marking unit of module data as public and providing unique url link for it + allow access to it from the outside world)
  • Figure out the remaining requirements and model solution...

Task list for any changes/modifications needed in order to support designed model:

tbd.

BE - authenticating

  • log-in logic
  • sign-up logic
  • password resetting logic
  • the way of handling the "authenticated" state across all the pages and API

Set up Heroku instances and GitHub pages

  • Configure application to CI/CD to Heroku, make it spawn deployments for PR instances and create development instance
  • Create testing/linting pipelines
  • Destroy Azure (for the good of everyone)
  • Set-up Github pages and make API docs generate and deploy there on rebuild
  • Make other documentations auto-deploy to Github pages as well and sctructurize it here

Adjust for mobiles

As we plan to create a whole "new" version of the app for Android (and possibly iOS) it doesn't have to be perfect, being usable is fair enough.

Waits for #13 and #12

Bootstrap app

  • Create base for backend (+ db connection)
  • Create base for frontend
  • Add some test saga with test action polling data from test endpoint and displaying them
  • Denote typing of test component, reducers, selectors, etc..

Wrong dotenv package import

According to this article dotenv is wrongly imported in the ES6 module manner.

The import from src/api/constants/config.ts

import dotenv from 'dotenv'

dotenv.config()

should be import 'dotenv/config'.

Pending fixes

FIXES

  • Polluted localstorage causes app to crash resolved as part of #81
  • Add throbber to avoid 'flicking'
  • Resolve empty notifications on Auth screen
  • Create directory for default images
  • Move default user and household images here
  • Navbar crashes when user has no
  • Make newly created users and households created with default image use these images
  • Make household selecting on main page modify route
  • Fix BE to actually return 4xx and 5xx response codes on errors and modify Fe accordingly- resolved as part of #69
  • Dialog Settings page does not refresh state correctly - resolved as part of #69
  • Household settings > back > Household settings causes page to break resolved somewhere
  • User state doesn't update after successful login (signup probably as well) resolved as part of #81
  • Connection request message won't show after sending until refreshed - resolved as part of #69
  • Households > ignoring invitation doesn't refresh the page / update state
  • Resolve remaining pending todos if any
  • My Households won't show in Households tab until re-render happens, either by a click or mouse-over
  • Make some request pass ids of updated entities (e.g. householdId) via route (e.g. .../{id}/...) instead of merged withing body's inputs

Define base relations

  • Create relation of Connection between users, requests for connection, ignoring and blocking

  • Create relation of Household between connected users, family admins and members, family settings, invitations, etc.

  • Create UI on homepage for new relations.

  • Modify settings to support Connections relations on both FE and BE

  • Modify settings to support Households relations on both FE and BE - Will be done within #40

DevOps

  • Set up repo - actions, milestones, project boards, labels
  • Set up Web App, Web App Beta and Db
  • Add configuration for npm
  • Add missing configuration for eslint
  • Add missing configuration for mocha
  • Add configuration for webpack, babel and typescipt
  • Organize automation configurations
  • Add boards and labels automation or no one will use it here
  • Test and fix pipeline automation after providing base app code
  • Test and fix Web Apps deployment after providing base app code

Refactor db<->server communication to use mapping helpers

Extract mappings from and to SettingsDataKey performed in modules/* to separate server helper so it is all in one place, change name from SettingsDataKey to smth. like dbKeyMappings and ensure every data leaving functions in modules/* get properly mapped by these functions

FE - Add transitions

  • Notifications appear and disappear without any transition effects (though there are some transition easen styles on them).
  • Add a whole lot of other transitions....EVERYWHERE ๐Ÿ˜ˆ !!

Create Static Pages

  • Terms and Conditions
  • Privacy and Policy
  • Not Found
  • Anything else that might be needed
  • Modify footer of the website to display links to these pages

Implement connection and invitation messages

BE, and partially FE supports appending messages to connection and invitation requests, currently, there is no way to include them during inviting or requesting connections. Probably via ConfirmationDialogs implemented as part of #44 .

Design and create Static pages

  • Design a way static pages (e.g. Terms and Conditions, Newsletters, ...) will be displayed
  • Create sample Terms and Conditions

Create tutorial dialog

Show tutorial dialog upon fist log-in that shows overview of funcionalities and how to use the app

Implement useScrollOffset hook

Currently, useScrollOffset hook returns dummy values instead of actual offsets to be used by "floating" elements when rendering tooltips, causing tooltips to display incorrectly when vertical (or horizontal) scroll is differnet than 0

Massive Testing

  • Manually test all functionality, add bugs to requested fixes above and fix them
  • In doing so, provide testing scenarios, write tests for swagger and/or selenium tests for UI

Refactorization + Code standards

  • Refactor BE and FE authentication, get rid of those -1s, refactor sagas
  • npm audit packages and fix errors
  • resolve issues reported by browser's dev console
  • change localStorage keys to constats
  • Fix FE auth routing where user gets always redirected to /login
  • Fix preloading flick caused by loggedUser set to true in initialState
  • Denote stricter code standards based on the refactorization
  • Update eslint rules to enforce the new standards
  • Fix components to use hooks instead of old class component syntax
  • Make DB use transactions
  • Resolve remaining TODOs
  • Group FE components without creating circular dependencies
  • Cannot enque after fatal db Query Error is back!
  • Implement accessed route redirecting after login
  • Refactor static/ directory, provide real logos and icons
  • Denote bundle partitioning
  • Get rid of ugly * imports
  • Refactor css properties usage
  • Refactor sagas
  • Refactor table imports

Fix DB connection resetting on error

The former mechanism broke after rewriting the db connection wrapper to support promises. Would probably require just minor modifications in order to fix it.

Provide promise-based transaction wrapper for database module

  • Extend database module with single promise-based function that internally wraps provided list of SQL queries with transaction directives (TRANSACTION, COMMIT, ROLLBACK) - inspiration ca be taken from here.

  • Possibly refactor current db queries to use transactions where it makes sense (might be nowhere)

Refactoring

  • Rewrite Front-End to TypeScript and refactor it in doing so
  • Replace current custom modals with react-conduit
  • Refactor styled components so that only reusable components are globally exported
  • Refactor settings
  • Fix floating UI and tooltips
  • Refactor and generalize forms (maybe with the help of react-forms or some other lib)
  • Make Back-End use Postgress instead of MySql (done as part of #74 )
  • Intoduce proper typings to API, refactor it and update docs to match it.
  • Update Image Editor

Fix server routing

  • Server should return index.html on non-ajax requests on all requests
  • In case the request is triggered by an action on FE - return only data

FE - authenticating

  • log-in logic
  • sign-up logic
  • password resetting logic
  • design of the pages and notifications
  • notification logic
  • polish after BE is ready

Create profile settings page

Basic settings such as photo or nickname changing, password resetting, etc.

Create separate password resetting page as well and connect it with Forgot password? dialog of Auth screen. This might require modifying users table to add some security token to use in reset pass URL to identify user (users will access this page from received emails)

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.