Meeting

To-do list

Maintainability Issues

  1. Change project name
  2. Add .gitignore to exclude unnecessary files
  3. Standardize file names
  4. Remove uncessary files
  5. Use .htaccess to restrict folder access
  6. Change all absolute path to relative ones

Design Issues

  1. Utilize templates for header and footer
  2. Welcome page
    • For logged-in users: user dashboard
    • For other users: intro to project + log in form
  3. User functionality
    1. User registration
      • Use user-specified username as the unique id, instead of email address
      • Detect institution based on email address
      • Certification upload?
    2. User log in
      • Use cookies to record user’s log-in state
    3. User dashboard
      • Search, upload, and identify buttons
      • Manage uploaded genomes
      • Modify profile (name, email, institution, social media, etc.)
    4. User profile
      • Improve profile page URL
      • Display user information
      • List genomes uploaded
      • Show recent activities
    5. User related buttons in header (profile, settings, logout, etc.)
    6. Password recovery via email
  4. Genome functionality
    1. Genome profile
    2. LINgroup profile
    3. Submission
      • Validate genome sequence
      • Implement queue to manage user uploads
      • Use AJAX to fetch upload status
    4. Search
      • Improve search wizard
      • Use pagination for search result
    5. Identification

Security issues

  1. User authentication
    • Verify the identity of new users
    • Validate email address
    • Use salted hashing to store password
  2. SQL injection and remote execution
    • Check all user input for possible injection
  3. Access permission control
    • Do not render pages unless the user has permission
  4. HTTPS certification

Performance Issues

  1. Optimize Description table
    • Create N-N table to represent relationships
  2. Optimize SQL statement
    • Limit the number of rows returned
    • Prevent running queries in loops
  3. Cache
    • Frontend (JS localstorage)
      • Constants
      • Search result
    • Backend (RAM)
      • Constants
      • Recently searched query
    • Backend (FS)
      • Recently searched query
      • Frequently used data
Written on February 14, 2018