Giter Club home page Giter Club logo

kyma-showcase's People

Contributors

cortey avatar halamix2 avatar hanngos avatar kaktusowy500 avatar lyczeq avatar mmitoraj avatar mrcherry97 avatar mvshao avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

kyma-showcase's Issues

Generating ID for each picture

Description
Each picture needs a unique ID assigned to it.

Reasons
We want to reference a specific image using its ID.

Acceptance Criteria

  • During upload a new unique ID is generated for the picture
  • Backend replies to the upload request with a generated ID
  • Generated ID meets UUID/NanoID criteria

Resending event in case of failure

Description
When sending an event fails, it should be resent and an error should be reported.

Reason
We need to resend an event and report an error when sending an event fails.

Acceptance criteria

  • event is being resent
  • error is reported

Test tables implementation

Description
Test tables idea allows decreasing the huge amount of written code.

Reason
To not duplicate the code and keep the DRY principle it is possible to use Test tables suggested by Filip Strozik in the following PR: #52

Acceptance criteria

  • Using test tables in the test files

NSFW filter

Description
As a user, I don't want to see NSFW images on the image details page.

Reason
Users couldn't be able to see NSFW images on the image details page.

Acceptance criteria

  • NSFW filter
  • NSFW images have to be marked on the image details page

Scroll inside feed area

Description
As a user, I want to have the upload image area displayed all the time.

Reason
When a user is scrolling the page upload image area isn't displayed.

Acceptance criteria

  • Upload image area is all the time on top
  • Only feed area is scrolling

Displaying full image's description

Description
As a user, I want to see the full image's description including text, objects, labels etc.

Reason
The user should be able to see the full description provided by the GCP of the uploaded photo.

Acceptance criteria:

  • Labels are displayed in a proper way
  • Objects are displayed in a proper way
  • Text is displayed in a proper way
  • Detected faces are displayed in a proper way
  • Logos are displayed in a proper way
  • Landmarks are displayed in a proper way

Feed page displaying specific numbers images

Description
As a user, I don't want to see all the images on the home page.

Reason
The home page doesn't need to display all uploaded images.

Acceptance criteria

  • Home page displays a specific number of images
  • Buttons previous and next page

Reuploading the same photo

Description
As a user, I want to choose a photo that I want, sometimes more than once.

Reasons
If the user chooses the same photo in the upload input button stays disabled.

Acceptance criteria

  • Being able to upload the same image twice

Environment fields configuration

Description
Keeping the code's readability and decreasing the chance of making mistakes using env variables.

Reason
Env variables are too generic and can be overridden in accidental situations. Suggested by Filip Strozik in the following PR: #52

Acceptance criteria:

  • Add prefixes and categorize them

Interface for logger - handling errors

Description
An interface must be implemented that will ease handling errors.

Reasons
Implementation of this interface will improve handling errors.

Acceptance criteria

  • Implamanting interface
  • Code refactor of errors

Additional information:

  • Think to wrap errors in the way it was suggested in the previous PR: #52

Displaying map next to landmarks

Description
As a user, I want to see where the landmark is on the map.

Reason
Only coordinates don't look well, the map could be nice for better UX.

Acceptance criteria

  • displays the place where the landmark is located on a map

Go interface for Redis client

Description
As a user, I want the flexibility of choosing the different databases, with ease.

Reasons
Keeping the high quality of the code.

Acceptance Criteria

  • interface was implemented
  • unit tests was implemented
  • full compatible with existing API

Sentiment analysis function

Description
As a user, I want to know the emotional opinion of the text and I want to get information about the writer's attitude.

Reason
We want to share with users more information about text in objects.

Acceptance criteria

  • function is triggering from text-event
  • get text from DB
  • get informations from GCP
  • put informations to DB

ErrorPage for invalid URL

Description
As a user, I want to know when the URL is invalid

Reasons
We will display ErrorPage when the URL is invalid.

Acceptance Criteria

  • Writing invalid URL manually causes ErrorPage to display
  • Deleting some letters from URL causes ErrorPage to display

Additional remarks

  • Router has to be modified
  • ErrorPage has to be implemented

Homepage getting populated by images from database

Description
As a user, I want to have a homepage that displays content available in the database.

Reasons
We want to have a working feed section.

Acceptance Criteria

  • Opening a page triggers a request to get all images from the backend
  • Images need to be displayed as tiles

Additional remarks

  • Tile should be prepared as template

Information about processing status

Description
As a user, I want to know when my image processing has ended and I can see all information about it.

Reason
The application has to inform the user about the status of processing the image.

Acceptance criteria

  • Information that image is still processing

Frontend tests

Description
The frontend application needs to be tested to keep high quality of the code.

Reasons
Keeping high quality of the code across the whole project.

Acceptance criteria

  • tests passed

Restricted access to the backend

Description
As a user, I mustn't get access to PUT, POST or GET from the console.

Acceptance criteria

  • backend has restricted access

Additional informations
When I made that command, the website has broke:
fetch("https://backend.rac-test.frog-dev.shoot.canary.k8s-hana.ondemand.com/v1/images", { "headers": { "accept": "*/*", "accept-language": "en-US,en;q=0.9,pl;q=0.8,fr;q=0.7", "cache-control": "no-cache", "content-type": "application/json", "pragma": "no-cache", "sec-ch-ua": "\"Google Chrome\";v=\"93\", \" Not;A Brand\";v=\"99\", \"Chromium\";v=\"93\"", "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": "\"macOS\"", "sec-fetch-dest": "empty", "sec-fetch-mode": "cors", "sec-fetch-site": "same-site" }, "referrer": "https://frontend.rac-put.frog-dev.shoot.canary.k8s-hana.ondemand.com/", "referrerPolicy": "strict-origin-when-cross-origin", "body": JSON.stringify({"veruBadFetch": true}), "method": "POST", "mode": "cors", "credentials": "omit" });

End to end tests

Description
As a user, I want to know that the application is working well.

Reason
The application has to be tested what a real user scenario looks like from start to finish.

Acceptance criteria

  • Add end to end tests
  • Tests are passed

Fetching image in lambda

Description
Lambda requests images in base64 from DB using the backend.

Reasons
We need the image in base64 to send it to GCP for the proccesing.

Acceptance criteria

  • Lambda making a request to the backend
  • Essential information extracted from response
  • Delete the header from base64

Checking if content exists when posting to database

Description
The existence of the content of an image should be checked before putting it in the database.

Reason
We need to check if content exists to avoid posting images that don't have one.

Acceptance criteria

  • content is being checked before putting an image in the database

New UI & UX Design

Description
As a user, I want the UI & UX to be beautiful and convenient.

Reason
The current website design doesn't look well and should be redesigned.

Acceptance criteria:

  • New design of Homepage
  • New design has to be fulfill requirements of Kyma

Getting more image details

Description
We want to get image details/labels in multiple different categories.

Reason
To get more image details we need to trigger more lambdas via event.

Acceptance criteria

  • Create lambdas for details categories
    • text
      • entity analyze
      • category analyze
    • handwriting
    • logos
    • multiple objects
  • Sending event after initial image processing
  • Event contains specific labels
  • Lambdas respond to event following their purpose

Displaying information from functions

Description
As a user, I want to see all informations about the image.

Reason
We want to share with users the informations about analyzing photo.

Acceptance criteria*

  • all informations from DB have to be displayed in ImageDetailsPage

Continuous integration and deployment

Description
Enabling the CI/CD automation in the project.

Reasons
Automating the project building process

Acceptance Criteria

  • Prow
  • Dockerhub
  • Makefile

Error page for wrong URL

Description
As a user, I need to get information about the wrong URL address.

Reason
It can be problematic when the user provides an invalid URL and doesn't get information about it.

Acceptance criteria

  • After providing an invalid URL, the error page is displayed

Create documentation

Description
As a user, I want a cohesive documentation of the project.

Reason
We need a descriptive documentation of our project and its details.

Acceptance criteria

  • Created a documentation
  • Documentation fulfils company requirements
  • Technical Writer approved
  • Helpful link

Lambda saves image details

Description
Lambda has to send image details to the backend and save it to the database.

Reasons
To process image details we have to save informations in the database.

Acceptance criteria

  • Sending image details to the backend
    • image details are available in lambda as JSON
  • PUT endpoint should be used #19

Accepting URL as an image input

Description
As a client I'm able to paste a URL from a webpage instead of having to download the file.

Reasons
Increasing ease of use and accessibility

Acceptance Criteria

  • Image is loaded from URL
  • Image gets saved and processed in same fashion as one uploaded from file

Additional remarks

  • Stretch Goal

Redis&Go Integration

Reason

First iteration of basic Redis and go integration.

What to do

  • Setting up the Redis database
  • Sending a request to DB [Refactor]
  • Getting an answer from DB [Refactor]
  • Containerisation
  • Image support
  • REST API
  • Unit tests
  • HTTP Error support

Sorting images in feed

Description
As a user, I want to see the last image upload on top and the rest of the images sorted in the feed.

Reasons
Sorting may give a better usage feeling of the application and the user doesn't have to search his uploaded photo.

Acceptance criteria

  • Uploading date + hour have to be saved in JSON and send to the backend
  • Images have to be sorted from the newest

Marking recognised object on the photo

Reasons
To be able to easily point out the recognised object in the overall picture.

Description
Location of the object is marked by a box.

Acceptance Criteria

  • Correctly pinpointing the area that the item is located in
  • Boxes show up in size adequate to the object size
  • A toggle enabling / disabling the markings

Additional remarks

  • Stretch goal

Naming conventions API&DB

Description
Methods and files need to be more informative and there should be no repetitions when calling a function.

Reasons
Methods' names and filenames are too general (api.go) and repetitions occur (db.InsertToDB).

Acceptance Criteria

  • Clear and informative names
  • No repetitions

Refreshing image details page

Description
The image details page should be refreshed until all labels, objects etc from GCP are displayed.

Reason
We need to refresh the image details page so that users can see all labels, objects etc got from GCP

Acceptance criteria

  • all labels are displayed after processing has finished

Frontend Dockerfile configuration

Description
Whole service needs to be deployable in Kubernetes.

Reasons
We need to first containerise the frontend in a dockerfile.

Acceptance Criteria

  • Creating an image
  • Code runs on a container

Frontend passing the uploaded image to the backend

Description
As a user, I want to upload a new image to the system, so that it can be later displayed and processed.

Reasons
We want to upload a new image to the system.

Acceptance Criteria

  • Upload button triggers image upload
  • Uploaded image is sent to the backend

Additional remarks

  • Image needs to be converted to base64
  • It can be any image, for now, we can use a static image
  • backend accepts JSON as an input

Fetching image description

Description
As a user, I want to be able to see the image description on the details page.

Reason
We will be displaying the details of the clicked photo.

Acceptance criteria:

  • Clicking a tile takes the user to the details page where he is able to see the image's details
  • The details are displayed below the photo

Additional remarks:

  • The details are requested by the unique id

Image upload event

Description
As a user, I want my image to be processed as quickly as possible.

Reasons
Using events we are able to increase the processing speed by contacting the lambdas using events.

Acceptance Criteria

  • Enpoint config from env [URL/Ports]
  • Event is created upon image post

Homepage & Details page

Reason

First iteration of frontend implementation

What to do

  • Every detail is responsive and works well on most devices
  • Adjust image component to look the same no matter what size of the uploaded image is

Lambda functionality integration

Description
We want all our lambda essential functionalities unified in one lambda.

Reason
All our essential lambda functions are needed for image processing so they should all respond to the initial event.

Acceptance criteria

  • #58 Issue resolved
  • #60 Issue resolved
  • #62 Issue resolved
  • All functionalities working in one lambda

Kubernetes deployment

Description
As a user, I want my product to be Kyma deployable via Kubernetes.

Reasons
Using Kubernetes in Kyma will enable all the cloud functionalities.

Acceptance Criteria

  • YAML file has to be created
  • Deployment has to be created
  • Services have to be created
  • API Rules have to be created

Posting file after change extension

Description
When I change the extension (example XLSX/PDF) of the file I can post it.

Acceptance criteria

  • Blockade for files, which aren't images

Image processing in GCP

Description
As a user, I want to get details information about the photo.

Reasons
To process an image lambda has to send it to GCP and get a response with detailed information.

Acceptance criteria

  • Lambda sending image to GCP
    • image in base64 is available in lambda
  • VisionAPI access configured in lambda
  • Processing an image in one category
  • Extracting relevant information from response from GCP
  • Response available in lambda for further processing

Fetching image from the backend on the ImageDetails page

Description
As a user, I want to be able to see the photo I clicked on the details page.

Reasons
We will be displaying the image on the image details page.

Acceptance Criteria

  • Clicking a tile takes the user to the details page
  • Photo in base64 is requested from the backend

Additional remarks

  • The photo is requested by the unique id

API Endpoint with PUT

Description
It is necessary that the saved image data can be expanded by labels and descriptions

Reasons
We need to be able to easily edit the image entry by adding labels and descriptions to it

Acceptance Criteria

  • Creating an endpoint
  • Adding new received information to the database entry (adds, not overwrites)
  • Updating image status

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.