pmdevita / summer-code-jam-2020

The repository for the 2020 summer code jam. Find more information at https://pythondiscord.com/pages/code-jams/code-jam-7/
MIT License
2 stars 0 forks source link

Technical Design #3

Open pmdevita opened 4 years ago

pmdevita commented 4 years ago

Python CodeJam Technical Overview

Django/Back-end

API

Through Django's server-side sessions, we can track clients and keep data about their messages and progress in the database

Directory

Messaging

Alternatively, might be better to do with websockets rather than HTTP

Database

Directory

A table of every user and some info on them. Has the following columns

and any other data we want to keep track on a user

Messages

A table containing all message data between users

Front-end/Python/Vue

Design

The message platform will have three main designs dubbed Messenger, AOL, and IRC. We need to design the look of them. To do this, everyone should draw their idea of how each view should look and other details about how it should function. They should design both a desktop and mobile interface (side note: when designing the desktop/mobile variants, think about how components of the interface are reused or where they change position. It's easier to adjust a view a little bit to swap between than to redo it for both).

We need to have a clear view of design before we proceed so that we can split up the work in an orderly way.

Components

The view will be split up into several different Vue components which manage other components and the document. It should look something similar to this

ViewManager
  |- Directory
       |- UserInfo (info about this user)
       |- OnlineUsers
            |- UserComponent
            |- UserComponent
            |- ...
  |- Messaging
       |- MessageHistory
            |- Message
            |- Message
            |- ...
       |- MessageCompose
            |- Textbox
            |- Send

(I kinda just spitballed the names, feel free to think of better ones)

DomicidalDesigns commented 4 years ago

Here are my designs for the 3 chat interfaces. I figured we can go with a 3 column layout for the desktop versions with the chat interface in the middle. For mobile I think using 3 tabs would be a good option.

Frontend Design

Desktop (3 Columns)

Mobile (3 Tabs)

IRC is the exception because IRC is a primarily text command / CLI chat interface. We would only need 2 columns for the desktop site and no tabs for the mobile site (everything displays in the viewport). It would be nice to integrate text commands to mimic IRC commands and navigate between different views that just changed the content in the viewport. Common IRC commands

Modern Messenger

FacebookMessenger_early-internet-chat-apps

AOL Instant Messenger (AIM)

AOL_early-internet-chat-apps

IRC (Internet Relay Chat)

IRC_early-internet-chat-apps

minestronesoprano commented 4 years ago

A possible extension, if we complete basic functionality early enough, is to include something even earlier than IRC, moving into Talkomatic and stuff with even less of a GUI than even IRC. This is an example of 80s "messaging", which allowed 5 people to chat at a time:

image

Dom, what did you use to get such nice wireframes?

DomicidalDesigns commented 4 years ago

It'd be awesome to include talkomatic since Wikipedia says it's the "first multi-user online chat system." @mshankar58 I used draw.io and a lot of free time to make the mockups.