Skip to content

Latest commit

 

History

History
321 lines (280 loc) · 9.15 KB

TODO.md

File metadata and controls

321 lines (280 loc) · 9.15 KB

ToDo's

  • general

    • use prisma pothos plugin
  • auth

    • user model
      • user infos
      • uni infos
    • sessions model
    • signup/ signin/ signout backend
    • auth scope plugin
      • add top level public auth
      • csrf token
    • auth ui
      • multi page signup
        • uni infos
        • bio
    • setup zustand stores
    • setup auth hooks
    • signup / signin frontend
    • signout frontend
    • refactor signup, signin store redirects
    • persist auth
      • keep signed in option
    • protected routes
      • server sided auth redirects
    • when auth redirect happens, client store doesnt get auth info
    • add faker.js for test user generation
    • sign out of all devices
    • signin with username or email
  • users

    • friends

      • server side

        • send req
        • accept req
        • decline req
        • decline all
        • unfriend
        • check if user is friend
        • get all friends of a user
        • get all pending requests of a user
        • get all sent requests of a user
        • unsend requests
      • client side

        • discover page

          • add navigation for diff searches (people, server)
          • search people
            • add friend button states
              • already friend
              • sent request
                • unsend a request
              • yourself (currently not rendered at all)
              • loading states
            • error handling
            • refetching data
          • pagination
            • infinite scroll
          • search servers
        • send request

        • show pending requests on friends sidebar tab

        • accept/decline req button

        • show friends on right sidebar tab

          • open context menu
            • show profile button
            • unfriend button
          • onclick open profile modal
          • unfriend from modal
        • update cache on request accepted

          • friends tab + requests tab
        • decline all button

        • request button state update on pending request already

          • on click opens modal and confirms accept or decline (maybe)
    • profile modal

      • improve the signup before profile

      • integrate in curr user profile

      • integrate in friends tab

      • integrate in requests tab

      • integrate in discovered users

      • integrate in messages

  • direct messages

    • message threads
      • search friends with suggestions (eligible)
        • server side searching with debounce
      • clicking on user in search creates thread
        • threads are always there
        • add active message threads on user
      • query active threads in direct messages component
        • redirect to thread page on click
      • make thread page by id
        • invalid thread id ui handling (probably redirect to index)
        • make a default page for initial render
      • usercards in friends tab context menu message option
      • default index page for /messages and /thread
      • profile modal message button
        • created thread on click
      • click "+" opens modal with list of eligible people (not sure about this button, might be removed)
        • implement searching with debounce in modal
  • chat service

    • general

      • add dockerignore config for prod+dev
      • add container names on prod
      • remove /ws route from traefik
      • add redis
      • fix shared folder in docker container
      • add new chat service
      • add production config for chat service
    • socket

      • remove socket from api/web

      • use zustand for client socket stuff

      • add ioredis

      • figure out auth

        • authenticate on ws connection handshake
          • store auth info in redis (socket id as key)
          • remove cache on disconnect
        • graphql route for ws auth
        • use lightweight gql client for auth
        • use error events for emitting error
          • listen for errors in client
      • make event names

        • scalability with servers
        • dynamic names to be able to migrate later
    • Api

      • make auth + room eligibility validator queries
      • save messages gql queries
      • create messages + update thread in a transaction
        • queries should be fire and forget queries
        • prevent multiple instance of api from inserting same message (load balanced query anyway)
      • authenticate internal requests
        • use internal key to sign jwt
      • test all rtc and socket auth events
        • socket session auth
        • join room auth
        • auth info cache deletion in redis store
        • error events listener
      • frontend gql queries
        • get initial messages
        • edit messages (maybe)
        • reactions (maybe)
      • api persisted messages duplicate on replicas (major bug fix)
    • Web

      • make chat ui
        • formik
        • add profile modal
        • thread page query no cache
        • group messages by same author
        • hold shift + enter shouldnt submit form
        • pre formatted text
        • up/down arrow key event
        • emoji picker
        • stop auto scroll on hover
        • paginated messages
      • socket client connect/disconnect event
      • send messageDTO
      • join:room event happens before connected (bug fix)
      • initial query to fetch messages
      • add error events listeners
    • shared types

      • add path alias on all service
      • server events
      • pubsub events
      • messages types
      • auth user types
  • media upload

    • setup localstack
    • setup aws sdk
    • services for aws media file upload
    • api mutations/resolvers for gql file upload
    • web
      • file uploader
        • remove single images
      • media viewer
        • {x}] modal with backdrop
        • fixed size?
    • update production env
    • add aws config to docs
      • commands to create bucket
      • add acl permission to bucket
  • messages

    • media upload
      • use localstack
      • s3 bucket
      • images
      • videos
      • audio
      • any file upload
    • mentions
      • shows user card on click
    • reply to messages
    • reactions to messages
      • only emojis
    • maybe markup
  • discover

    • search users
    • search public channels
    • filter by uni/semester/department
    • recommend users/servers
  • settings page

    • add profile edit
    • add profile picture
    • logout
    • sign out of all sessions
    • change password
    • username colors
  • servers

    • create a server
      • change to a modal maybe instead of route?
    • model
      • name
      • icon
      • banner
        • show on discover page
        • show on invite page
      • owner
      • type
        • private invite only
        • public discoverable
          • anyone can join
        • closed
          • cannot invite
          • pending invites can be accepted
      • server about
        • show on discover page
        • show on invite page
      • members
        • show member on right
        • separate different roles
      • channels
        • name
        • locked/normal
        • messages
        • each channel has a MessageThread in it
        • default channels for every server (welcome/rules)
    • server context menu
      • invite people
        • shows friends on modal
        • invite by username
        • deny the invite if user already member
      • edit server
        • delete server?
      • leave server
        • admin cannot leave if only admin on server
    • server info modal
      • show join button on public servers
      • show mutual friends members
      • show info
    • friends/messages/server-member (card) context menu items
      • invite to server
      • server member view profile
    • server invites
      • show invites on discover page
        • accept/decline invite
        • redirect on accept??
      • invite from discover users page
      • invite by custom url
        • only admins can generate url
    • roles
      • admins
        • change roles of members (member context menu)
    • add members
      • invite only?
      • can send invite to anyone with username
      • public join url
    • remove members
    • members leave
    • member permissions
      • block / ban users
      • admins can create/delete/update channels
      • lock a channel
    • update server mutations
    • close server
    • lock threads/channels
    • permission checks on all mutations
    • search servers on discover page
      • join button for public servers
    • solve n+1
    • mock server data
    • SEO changes (title, description)
    • update demo images
  • reactions/emojis

    • emoji picker
    • message reactions