linkHome

Welcome

Welcome to the website that will give you an overview and introduction to the project we have been working on. We are eight students from the Royal Institute of Technology in Stockholm, Sweden and we have been assigned to come up with a project that is relevant to our technical education.

Our project idea

Initially we came up with several different good ideas. The first was a peer-to-peer file sharing application. We wanted it to be as easy to use and offer the same functionality as the large cloud storage services that exist today, but without the need to store data through a third party.

The second idea we came up with was a website that would focus solely on letting users engage in political debates. Users could vote for the best argument and the argument with the most number of votes would appear first on the website.

The idea we chose was none of the above. Instead, we came up with something that might be considered a little more difficult, we wanted to develop a network application to make it easier for programmers working on the same project. This application would allow developers to see in real time what other team members are working on and what files they are changing.

Last note

This website is mainly for us and our classmates who want to get an overview of our project. This website contains information about our product, our sprints and who we are.

linkProduct

Overview

Our product Lumi enables real-time inspection of file changes made by all team members. A client connects to the server and creates a room. Other clients can join the room. If a client makes a file change, the update is sent to the server and validated. If approved, the server will send it to the remaining clients in the room.

Lumi overview

All this results in a synchronized workflow that minimizes conflicts and makes it easier for programmers to get an overview of what is currently being updated.

Functionality details

Down below is diagram made with Draw.io that describes how the client and server should interact with each other. If you use this diagram, you should be able to implement the base functionality in some programming language.

Command line interface

As a user on the client side, you must be able to communicate with the server in order to create a room, join a room, leave a room and so on. The main tool at your disposal will be the command line interface.

To install the command line interface for Lumi enter the following command in your shell.

$ npm i -g lumi-cli

Note that you need npm installed before you can download and use Lumi.

After you have installed Lumi you should be able to ping the server using the following command.

$ lumi ping

Then we could ask the server to create a new room using the following command. The server should respond with a unique room id.

$ lumi create

If we would like to join an already created room we can use the following command.

$ lumi join <room id>

If we would like to check whether a room exists or not we can use the following command.

$ lumi check <room id>

If we don't want to use two separate commands to create and join a room we can use the following command instead.

$ lumi start

This list will be extended over time as we add more functionality.

linkDownload

Select your operating system

Choose the right link depending on your operating system. After clicking on a link, the Lumi GUI (Graphical User Interface) will be downloaded.

OS Link Version Last edited
Windows lumi-windows-1.0.0.exe 1.0.0 2020-05-18
Mac OS X lumi-1.0.0.dmg 1.0.0 2020-05-18
Debian lumi_1.0.0_amd64.deb 1.0.0 2020-05-18
AppImage lumi-1.0.0.AppImage 1.0.0 2020-05-18

linkSprints

Sprint 1

date_rangeStart date

2020-04-20

date_rangeEnd date

2020-04-24

location_onSprint demo

In a Zoom meeting at 08:30 AM

Daily scrum

Everyday at 10:00 AM

starSprint goal

Be able to use the base functionality. You should be able to sync my folder with a folder on a teammates computer.

format_list_bulletedSprint backlog

ID Story Story points
IP-48 Make a simple project website. 3
IP-76 Create CLI controller from CMD prompt. 5
IP-53 Create a connection between the Client A and the server. 5
IP-61 Clients shall be able to detect file changes. 13
IP-55 Server shall create a unique new Room and associate user with room. 5
IP-60 Server and Client A shall be able to handle delete, move, and create files and folder. 20
IP-59 Client A shall store the shadow folder inside the source folder. 2

Story points sum

Sprint 2

date_rangeStart date

2020-04-27

date_rangeEnd date

2020-05-04

location_onSprint demo

In a Zoom meeting at 08:30 AM

Daily scrum

Everyday at 10:00 AM

starSprint goal

Be able to send commands from the CLI, --join, --create, --health-check.

Be able to send patches between server and client.

format_list_bulletedSprint backlog

ID Story Story points
IP-100 Research how to get rid of relative paths. 5
IP-115 Create deploy script. 2
IP-117 Connect the local CLI with the Cloud API. 5
IP-71 Client A shall be able to receive a change and update its shadow folder. 1
IP-116 Connect the CLI with the client, hence being able to use Lumi commands. 13
IP-17 Client read and parse file difference to create diff. 13
IP-70 Server shall broadcast the file change. 5
IP-59 Implement Zip funtionality. 20
IP-82 Server cleanup when empty room. 5
IP-79 Client leaves the room. 5
IP-72 Client A shall be able to request to join a room. 5
IP-57 Server shall send back a shadow folder which has the same content and structure as source folder to Client A. 3
IP-60 Server and Client A shall be able to handle delete, move, and create files and folder. 20
IP-84 Server apply patch to the room folder. 13
IP-83 Create patch and send patch. 8
IP-78 Server handle user disconnect. 8
IP-81 Client disconnects from room. 13
IP-74 Server shall send out the shadow folder to client B. 1
IP-75 Client B shall store the shadow folder inside the source folder. 1
IP-86 Clients applies the patch to their shadow folder. 5
IP-119 Implement exclude RegEx for zip function. 5

Story points sum

Sprint 3

date_rangeStart date

2020-05-05

date_rangeEnd date

2020-05-11

location_onSprint demo

In a Zoom meeting at 08:30 AM

Daily scrum

Everyday at 10:00 AM

starSprint goal

Implement basic functionality in React and Electron. The server should be able to handle all the basic commands such as join, create and leave without any bugs as well as authorization for the users.

format_list_bulletedSprint backlog

ID Story Story points
IP-40 List users in room. 5
IP-137 Backend shall be able to send the last change done by user. 8
IP-79 Client leaves from room. 5
IP-82 Server cleanup when empty room. 5
IP-135 Create invite component. 8
IP-77 Kick user from room. 5
IP-139 Front-end team creates a mock-up to present on tuesday morning. 8
IP-41 Create user config. 8
IP-128 Create "create room" component. 5
IP-127 Create loading screen. 5
IP-156 Design new logotype. 3
IP-158 Fix Typescript and Electron environment. 8
IP-134 Create settings component. 13
IP-143 Implement password for room. 13
IP-161 Join room with password. 8
IP-159 Create leave room component. 5
IP-131 Create Server log component. 8
IP-88 Server rejects the patch. 8
IP-125 Fix deletion-then-creation of folder with the same name bug. 5
IP-87 Handle merge conflicts. 13
IP-147 Modal pop-up electron. 8
IP-140 Create loading GIF. 5

Story points sum

Sprint 4

date_rangeStart date

2020-05-12

date_rangeEnd date

2020-05-18

location_onSprint demo

In a Zoom meeting at 08:30 AM

Daily scrum

Everyday at 10:00 AM

starSprint goal

Package and release an alpha version of Lumi.

format_list_bulletedSprint backlog

ID Story Story points
IP-130 Create folder component. 8
IP-177 Fix currently know client bugs. 20
IP-173 Connect settings page to top-bar. 3
IP-174 Connect user overview to room page. 8
IP-184 Message user on front-end that the patch was rejected. 5
IP-172 Connect loading screen. 4
IP-185 Refine loading screen. 4
IP-178 User update in room component. 11
IP-171 Complete the settings page, connect to back-end. 15
IP-170 Create executable for all plattforms. 20
IP-145 Leave room React. 2
IP-142 Client shall be able to handle admin. 8
IP-146 Refine user overview component. 8
IP-179 Display correct room logs. 10
IP-175 Record user tutorial. 2

Story points sum

linkTeam

Product owner

Profile picture

personErik Rehn

emailerikreh@kth.se

public Github logo Linkedin logo

Scrum master

Profile picture

personJesse Feng

emailjessef@kth.se

public Github logo Linkedin logo

Developers

Profile picture

personChristopher Gauffin

emailcgau@kth.se

public Github logo Linkedin logo
Profile picture

personTobias Johannesson

emailtjohann@kth.se

public Github logo
Profile picture

personJoakim Tornert

emailjtornert@kth.se

public Github logo Linkedin logo
Profile picture

personMicheal Arenander

emailmicare@kth.se

public Github logo Linkedin logo
Profile picture

personOscar Persson

emailopers@gmail.com

public Github logo Linkedin logo
Profile picture

personMarcus Alevärn

emailmalevarn@kth.se

public Github logo Linkedin logo