-
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
- multi page signup
- 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
- user model
-
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
- add friend button states
- 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
- open context menu
-
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
- search friends with suggestions (eligible)
- message threads
-
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
- authenticate on ws connection handshake
-
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
- make chat ui
-
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?
- file uploader
- 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
- media upload
-
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
- invite people
- 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
- show invites on discover page
- roles
- admins
- change roles of members (member context menu)
- admins
- 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
- create a server
-
reactions/emojis
- emoji picker
- message reactions