Giter VIP home page Giter VIP logo

tagme's People

Contributors

billzito avatar kbchun avatar kkinaman avatar showmethewei avatar

Watchers

 avatar  avatar  avatar  avatar

tagme's Issues

[Client] Memory details

Mandatory user stories:

  • As a user, I should see the photo I just chose to upload
  • As a user, I should see indicators for what is happening (uploading and/or analyzing)
  • As a user, I should see the outcome of the upload
  • As a user, I should have a way to navigate to the home-screen
  • As a user, I should have a way to navigate to the memory list
  • As a user, I should be able to select which tags are relevant to me from the analysis

Other things:
Design mocks here: https://invis.io/BN93WOO9R#/200493362_Mobile_Portrait

Open questions:

[Server] /api/memories/id/

Mandatory user stories:
[X] Should check for JWT
[X] Unauthorized requests should return a 404
[X] Should return JSON object representing memory, including analyses and tags

Other things:

Open questions:

[Server] /api/memories/upload

Mandatory requirements:
[X] Should check for JWT
[X] If user is not authorized, return 404
[X] Takes a photo, uploads it to the CDN
[X] Does analysis using relevant Microsoft APIs
[X] Does analysis using other relevant APIs
[X] After analysis, creates a document in MongoDB representing the memory and relevant analyses
[X] Returns a unique ID pertaining to the memory

Other things:

Open questions:

[Server] /api/memories/all

Mandatory user stories:
[X] Should check for JWT
[X] If current user is not authenticated, should return a 401 with no results
[X] Should retrieve memories linked with current user's ID and return as a JSON object with a structure

Other things:

Open questions:

[Server] /api/users/login

Mandatory stories:
[X] Calling /api/login with a POST request should check whether that user exists, then whether their password matches their supplied password
[X] If successful return 201
[X] Else, reject and return 401?

Other things:

Open questions:

  • How should authentication be done using React Native?

Legacy Project Ideas

Interesting features:

  • Allow users to create their own tags or caption
  • Text recognition within photos (e.g. if you upload notes, you could get the notes in plain text form)
  • Upload all user photos at once, or, allow multiple photo selection
  • Ability to upload videos and analyze them
  • Auto-instagrammer (post photo to insta with best filter based on photo)

Cleanup:

  • Visual cleanup for Android version of the app

[Server] Authentication

[X] Decide on web tokens, facebook authentication, or something else
[X] Store JWT on client side and return with every request
[X] On server side, check for JWT before processing each request
[X] Don't allow access to a page if there is no webtoken in asynch storage
[X] Store the jwt secret and database credentials in config file rather than hard-coded

Resources:
https://auth0.com/blog/adding-authentication-to-react-native-using-jwt/
https://dzone.com/articles/adding-authentication-to-your-react-native-app-usi-1
https://github.com/adamjmcgrath/react-native-simple-auth
https://github.com/ryanmcdermott/react-native-login
https://github.com/lussatech/react-native-base-authentication

Continuous integration testing

User stories:

  • A test suite should be run every time a pull request is merged with upstream/master

Other things:

Open questions:

[Deployment]

Mandatory user stories:
[X] Server layer should be hosted on hosting site
[X] Should have easy mechanism to deploy latest code to production
[X] Something should host database

Other things:

Open questions:

[Client] Login/Signup

Mandatory stories:
[X] As a new user, I want to be able to sign up for this service
[X] As an existing user, I want to be able to sign in to my account
[X] As an authenticated user, I want to automatically see my home screen

Other notes:

  • Depends on /api/login and /api/signup
    -Consider facebook oauth in future

Open questions:

  • Are there methods of authentication that won't work well with native apps? E.g. will JSON Web Tokens work?

[Server] Routes

Mandatory user stories:
[ ] As a frontend dev, I expect an /api/login endpoint
[ ] As a frontend dev, I expect an /api/signup endpoint
[ ] As a frontend dev, I expect an /api/upload endpoint
[ ] As a frontend dev, I expect an /api/memories endpoint
[ ] As a frontend dev, I expect an /api/memory/id/ endpoint

Other notes:

Open questions:

[Server] /api/users/signup

Mandatory stories:
[X] Calling /api/signup with a POST request should create a new user
[X] If the supplied username already exists, return a 401 error
[X] Successfully creating the user should return a 201

Other things:

Open questions:

  • How should authentication be done using React Native?

[Client] Homescreen

Mandatory stories:
[X] As a user, I want to be able to navigate to the page to upload photos
[X] As a user, I want to be able to navigate to the page to see memories
[x] As a user, I want to be able to log out. Logging out will take me back to the login/signup screen

Other notes:

  • Full functionality depends on /api/logout, /api/memories

Open questions:

[Cleanup] Server-side

  • Password encryption
  • Hardcodings: DB password, JWT secret
  • How to do a development database vs a production database?
  • Grace handling of 404 requests?
  • Automate download of imagemagick (brew install identify)
  • Break .upload memoryController into multiple functions
  • Figure out why some images are only displaying 1-2 tags
  • Development database for testing
  • Move the controller directory from db to server
  • Fix api and user tests

[Deployment] Product Home Page

(Copied from Learn page)

  • Create a simple home page for your project.

Other things:

  • If you're not sure where to start, checkout using GitHub pages. It's free, robust, and can easily be personalized to your own domain.
  • Make the landing page a salesman's dream (clear, flashy, cool design, etc)! Templates are your friends!

[Client] Memory list

Mandatory user stories:
[X] As a user, I should see all the memories that I've uploaded
[X] As a user, I should be able to click on any memory to see memory details
[X] As a user, I should be able to navigate back to the homepage

Other things:

Open questions:

[DB] Setup

Mandatory user stories:
[X] Should be accessible from server
[X] Should be always-on
[X] Mongoose should have schemas for Users, Memories
[X] Set up mongoDB on heroku!! (recommendation from seniors to avoid conflicts between having separate databases)

Other things:

  • Check out MongoLab for deployment (and local testing)

Open questions:

[Client] Upload photos

Mandatory users stories:
[x] As a user, I want to be able to give my permission to access my stored photos
[x] As a user, I want to be able to select a photo from my camera roll / album
[X] As a user, selecting a photo will take me to the memory details page

Other notes:
-To upload, we can try this npm module: https://www.npmjs.com/package/react-native-uploader
-https://books.google.com/books?id=t74fCwAAQBAJ&pg=PT171&lpg=PT171&dq=react+native+send+photo+to+server+ios&source=bl&ots=xdBAZ2pHbT&sig=E3g0kdLtHs0UjI9hVZ5Y0lQL8xM&hl=en&sa=X&ved=0ahUKEwjOqYGxtPbPAhVhylQKHTrpBE8Q6AEISDAH#v=onepage&q=react%20native%20send%20photo%20to%20server%20ios&f=false

Open questions:

[Server] Setup

Mandatory tasks:
[X] Express app
[X] NPM init
[X] Task runner / automation system
[X] Connection with remote database

Other things:

Open questions:

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.