Git Product home page Git Product logo

engraved_legacy's People

Contributors

dependabot-preview[bot] avatar dependabot[bot] avatar pzyon avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

engraved_legacy's Issues

Sanitize user input

E.g. Trim texts (especially titles). Consider adding a "sanitizeItem" or something function to
https://github.com/PzYon/engraved/blob/master/server/src/db/DbService.ts:

  • call it for add and update
  • trim title and desc
  • maybe do other things
  • maybe even consider adding this to shared...?

While we are already at it, we might as well cleanup that class a bit. E.g. updateItem should not return promise of any, etc. There might be some other things, as apparently the typing for mongodb have been improved.

Show related items

E.g. when creating a new item or when viewing/editing an existing one.

Use keywords, etc.

"Current user"-page

Show some information about the current user, i.e.:

  • mail address
  • member since
  • etc.

Global UI improvements

  • consider setting maxwidth to 1000px (as is done by github, medium, etc. - seems to be a standard)
  • consider removing gray background (left/right) and add a fine border - maybe similar to github. Pages could have a border (consider omitting on search page)
  • consider adding a edited 11 minutes ago - component that
    • provides the real date on hover
    • provides a link to "edit"

Create new keyword not possible

If there is an existing keyword named "TypeScript" and I would like to create a new one named "Script" the "Create keyword xxx" is not display.

Add more item types

Consider adding more item types, for example:

  • recipes
  • tours (cycle, hiking, running, etc.)
  • quotes
  • HTML
  • ...

Or alternatively consider adding support for custom types, where the user define his own types.

Add "HTML"-item

Not sure if this is a good idea.. But we could consider adding either

  • a new item of kind HTML in order to be able to do very custom stuff - maybe even with script support?
  • or extend the existing Note kind to be able to support markdown and HTML

General refactoring

  • client folder structure: too much in "common"
  • server: split up controllers, add base?
  • config mechanism (client and server)

Before initial release

  • move all secrets and co to env. variables or something -> remove from git!
  • create (i.e. publish to npm) engraved-shared npm package
  • most probably a global package.json is required
  • version number in UI?
  • ...

Navigation behavior

  • Pages should all have an "x" in the top right, on close redirect to "/"
  • Global message
    • Show global message (similiar to ErrorBoundary)
    • Timeout to close after n seconds?
  • Buttons:
    • Create form:
      • OnSave: view OR home | message: "Created..." (and link?)
      • OnClose: home
    • Edit form:
      • OnSave: stay OR home | message: "Updated..."
      • OnClose: home OR view
    • View form:
      • OnEdit: edit
      • OnClose: home

Sort items

Add possibility to sort items.

Sortable props:

  • modifiedOn (default)
  • title

Render below search box. Maybe as flyout, maybe inline. Maybe with a gear/settings icon.

UX improvements

  • double click on items should open item (edit or view?)?
  • click on keywords in results add's them to the query (GlobalSearchBox)
  • URLs need to be opened directly...
    • either with an icon somewhere
    • or with double-click (see above)
  • notifications should disappear after n seconds
  • keyboard support for search box (#4)

... more to come

Dropdown improvements

  • Handle lots of items
    • simple limit
    • or scrolling
  • Add an easy way to close dropdown, especially on mobile
  • Add clear search action (keywords and/or search text)
  • Open dropdown with keyboard combination (ctrl+space for example)

Users and authentication

  • use google accounts or something
  • add "current user"-component with
    • logo
    • logout functionality
  • add splash screen
  • add users to database, link items to user
  • error handling when not authenticated?

Enhancements for note items

  • References (links, TOC, images).
  • Add some styling to HTML generated from markdown. E.g. the headings are too big, links should look nice, etc.
  • Code?
  • Dealing with images
  • Highlighting for code
  • TOC
    • Consider moving TOC to an own, border container
    • Do not show TOC if there is no content
  • Improve styling, everything seems a bit cluttered

Show kind specific info on items list

Next to the common information we need to show some type specific information (or actions) in Item.tsx.

Notes:

  • tbd - maybe nothing?

Code:

  • language

Url:

  • open Url action
  • print URL
  • favicon?

Token handling improvements

Refresh token
Token should be refreshed automatically somehow...?

Keep URL on redirect:

The token expires after a certain amount of time. This then redirects the user to the google auth API. Afterwards the user is redirected back to the root URL of our app. This leads to the context being lost.

To prevent this, we should:

  • either find a way to send the URL to google and get it back again
  • or store it in local storage before heading of to google

Create view and edit item dialogs

Every form has a

  • OnClick action (depending on form-mode / create [for new], edit [for view], save [for edit])
  • Readonly mode (depending on form-mode)
  • Fields (depending on type)

Notes

  • Consider reusing/adjusting EditItemForm.tsx
  • Consider reusing/adjusting Wrapper (or maybe even better would be to adjust IFieldProps) to be able to deal with read-only or not

Form UX/UI improvements

  • code editor should grow with content (or be resizable [or both]) - anyways, at the moment it's too big: https://ace.c9.io/demo/autoresize.html
  • input: shadow only on focus, no hover
  • labels: no all caps
  • validation
  • detect if item is dirty and set buttons/actions accordingly
  • consider hiding non-required fields by default and add them onclick

Possibility to define searches

As a user I most probably often perform similar queries, e.g. if I want to see everything related to "work" or "sport". Maybe we could add a functionality (on the user page) where the user can define and name queries, that he/she can then easily call. The queries could be display as tabs somewhere.

Refactorings, cleanup, etc.

  • ViewItemPage and EditItemPage could both be wrapped by a DoWithItemPage or something
  • Rename common-folder to reusable, e.g. move Markdown.tsx and CodeEditor.tsx there
  • Replace constructors with public readonly state: I..State
  • Create ActionButton or something for anchors (reason: to have a unified "action" component, a11y)
  • Analyze usages of inline function, especially in for/map (reason: performance)
  • Run Audit in Chrome - see if something interesting is printed
  • Consider adding react-hooks eslint plugin

UI Improvements

  • Navigation
    • Sticky
    • or small top bar
  • Top labels instead of left/table
  • Nice "view item" screen
    • Title should be bigger
  • Use font: https://www.ibm.com/plex/concept/
  • Get rid of dialogs and use "pages" or something instead
  • Primary/secondary buttons
  • Page title
    • engraved
    • engraved | my item title
    • engraved | edit | my item title

Welcome screen

  • is show when user is not logged in
  • nav is not shown
  • prints
    • some information about the app
    • login link

Add insights

Add screenshots or a video/gif to the repo showing the UI and demonstrate some use cases. :-)

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.