Coder Social home page Coder Social logo

it-project-porkbellypro's Introduction

Richard Li

Just a random dude who's into programming

Knows more stuff than I need

Languages

Rust Java Kotlin C C++ C# Python Typescript Javascript Dart PHP Haskell Prolog Go MATLAB Clojure Lua OCaml

Library, Frameworks & Platforms

MongoDB NodeJS express.js React CakePHP MySQL PostgreSQL Prisma Gin Flutter Android Rocket.rs AWS Docker GitHub Actions CircleCI Jest Unity HLSL GLSL

Contribution to Open Source

Visit my personal website to see more.

chomosuke's GitHub stats

Pull Requests

neovide 11863

logiops 3069


This README is updated daily by a python script running in GitHub Actions

it-project-porkbellypro's People

Contributors

chomosuke avatar oldbugo avatar pep1032314 avatar shangzhel avatar waltervan00 avatar

Watchers

 avatar  avatar

it-project-porkbellypro's Issues

Implement home screen view

The home screen feature is the first page the users see once logged in. It is through this 'screen' that the cards will be shown in a grid format.

  • Implement the card grid -- information received as prop from #54
    • implementing the card component
  • Include contexts and mechanics for exposing the detail component from #6.
  • Include universal search query logic onto the card grid based on intersection of keywords. SearchQuery received from App Context
  • Be able to make GET calls for image thumbnails. #30

Fix ci bug for PR #45 & #43

Problem is that we can not reference the shared workspace in test. If we do, the test still runs fine locally but it fails in github.

Implement registration endpoint -- POST @ api/register

Implement endpoint for user registration.
Passwords are already hashed at this point in the sequence by the client hence at no point that the password leaves the client software.

Ensure that:

  • User input is free of any 'strange characters' consult team for details. Data sanitisation, escaping input or forcing a certain list of characters are potential starting ideas.
  • Account duplicates are checked.

Add card detail component

Concerns the slide out panel for displaying card details, card editing form and new card entry forms. Components should contain all the buttons that will be hooked up to callbacks:

  • Expansion and closing button that will call functions passed as props pertaining to the appearance of the panel on the page. See #14.
  • Call the appropriate controller functions, implemented in #54.
  • Buttons that control the state of the panel to allow for updating fields. And show that images can be changed
  • Make GET requests to the server to retrieve images. #30

UX prototype interview with prototype v2

Conduct at least 3 prototype interviews with individual external to the dev team. The result should allow for greater refined for the next (and probably final) iteration of the prototype.

  • interview 1
  • interview 2
  • interview 3

Link to #33

Review version 1 of lo-fi prototype

Tag your name if you want to have a chat on the prototype, such as if you see something you want to put it or change. Leave a preferred time frame (especially the day of the week) if you want, otherwise I can look through the Universal Free Time. (hopefully before this Thursday)

Also feel free to add comments to the confluence or miro file.

Scroll card into view when selected to view detail

Expected behavior:

  • 1. Once a card is clicked, it's locked, meaning it's y-position will not change.

  • 2. User scrolling on the left side will unlock any locked card.

  • 3. deselecting the card also unlock the card (though deselecting shouldn't change a locked card position).

  • 4. if card grid's size is changed and no card is locked, the "scroll percentage" will be maintained (i.e. if it was at the very top, it'll stay there, if it was at the very bottom, it'll stay there, if it's anything in between, it'll scroll accordingly).

Implement login endpoint -- POST @ api/login

Implement end point for user login. If successful, a response with a cookie in the header that complements #24 scheme be sent back to the front end to set. For encryption, salt needs to allow #24 to decrypt cookie.

  • Escaping inputs ๐Ÿ‘
  • Validate and extract appropriate user Id from the database
  • Send an cookie encrypted with user data and session expiry duration.

Create tag picker component

Edit to picker presentation.
Add Tag text field doubles as a tag label filter. Remove colour selector but keep the add button.

Due 23rd September, 2021

Implement app lifecycle

Task involves:

  • Make the server serve the same page for all non-API and non-resource URLs
  • GET /api/me on app load
  • App lifecycle methods
    • Login
    • Logout
    • Register
    • update
    • showCardDetail
    • newCard
  • Login page redirection
    • Redirect to /login from / if not signed in
    • Redirect to / from /login and /register if signed in
  • Update buffers
    • Card update
    • CardField update
  • Controller actions
    • Card commit
      • PUT /api/card if card is new
      • PATCH /api/card if card exists
    • Card delete (DELETE /api/card)
  • Unit tests

Implement user home page -- GET @ api/me

Implement 'user home page.'
Backend to return a user's data, including cards and tags managed by the user. Images will be fetched independently in #30.

Awaits on #24 for authentication and evaluation of user identity.

  • Details sent to the client needs to be 'sanitised' to conceal DB or server structure (e.g Flattening nested structures or Objects).

Change API to send hash instead of hasImage

Deadline: 16/09

I think I simply change the hasImage field to a string instead of a boolean.

This is so that browser can differenciate between the different image properly and does not have to reload the image everytime

  • Modify REST API docs
  • Modify server route handlers
  • Modify web controllers

Implement Image Upload -- api/card/image

Images of the business cards can be uploaded for each card stored. This functionality needs to be researched.
It has been decided that the backend will enforce a size limit of 1MB, and that the front end is to offer resizing capabilities for this purpose. Atlas cluster has 512MB size limit. This endpoint acts independently from card CRUD operations.

http://expressjs.com/en/4x/api.html#res.send outlines how files can be sent back to the client.
https://www.npmjs.com/package/mime library offers MIME support for node.

  • Research how images can be stored on the database
  • Decide on whether to allow size limit, compress, or use GridFS
  • Edit schema to fit needs.
  • Defining API in documentation

  • implement endpoint in back end for POST
  • implement endpoint in back end for GET

Implement Card Create Endpoint -- PUT @ api/card

Implement endpoint on backend to for PUT requests in order to store card details in system.
Assuming that middleware #24 is able to provide user for the data, the card details must be sanitised. Issues does not include having to handle image upload. See #30 for the details.

Revision 1 for lo-fi prototype

Based on reviews gathered from lo-fi prototype 1, begin integrating and refining the new ideas into the design. The finalised version of this iteration should be presentable for the client for their opinion.

mockup prototype v2 is complete, and ready for client to review.

Implement edit card endpoint -- PATCH api/card

Implement end point to take PATCH requests for updating a card's details.
Assuming that middleware #24 is able to provide user for the data, the card details must be sanitised. Issues does not include having to handle image upload. See #30 for the details.

#23 Has a similar structure.

Implement responsive design to UX prototype V2

Given that client has given a pass on the current (desktop only) version of the prototype, begin designing for different view ports sizes including for mobile and tablet view. The final version should suffice to allow front end development.

  • mobile view
  • tablet view
  • ultrawide view

I hope this should be enough to start building the logical side of the front end. If there are some parts unclear on how it should be structured, let me know.

access link
https://www.figma.com/file/eTM4bPj4803ZOjXDyxsmOk/UX-prototype-v2.1?node-id=113%3A1447

UX prototype 2.1 changes:

  • Bulk select removed
  • Individual detail edit function accounts for both attribute and field
  • Centered search bar for desktop view
  • Add card button inside home view is removed
  • CRUD control for image during card editing added
  • Basic tablet view-port
  • Changes to home view for mobile view-port
  • Changes to card detail field layout for mobile view

The Card size changes for desktop view-port is yet to be implemented, because I have yet to find a suitable solution, and I didn't think it is necessary at this stage of our production.

Create Application Header Component

Concerns implementing components for header bar. Includes Search bar, add card button and profile dropdown. Suggested FluentUI components to check out are Split Button and SearchBars.

  • Information on user login state is passed as a prop from App.
  • Search Bar query string sets value in Context

Component triggers the following methods implemented by #54

  • Profile Dropdown house a logout button that triggers logout.
  • Add button triggers controller to construct a new card and loads the card into Context.

Add login view and register view

Task involves implementing login and registration form components. Redirection logic, login and registration api implementation will be handled by #54. Event handlers can call stub functions.

Add testing and CI

Project needs a unit/integration test pipeline and continuous integration.

Implement authentication middleware

Our system requires authentication of users in order to partition cards into views for each end user. This includes session management, and defining how session information is communicated between back and front ends.

Middleware will step in for requests accessing protect routes.

  • An encrypted cookie will need to be resolved into a user id
  • Resolved data to be validated
  • Data finds a way to be passed to further middleware down the chain.

Hook Mongo Cluster onto Server backend

As @pep1032314 had created an Atlas Cluster, we would like to hook it into the back-end code.

This requires following the process on Atlas to obtain a connection string, with appropriate database credentials.

  • Please do not disclose database access credentials here, or in the source code. Spread it via email and refer to it in the connection code through environmental variables. This environmental variable should also be sent to the deployment platform.

  • The infrastructure is set up and the back-end is able to establish a connection to the cluster

  • Implement updated models. See #16 for discussion

Branch db connection has been created for this purpose

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.