Real Time Collaboration

High-Level Project Summary

Our team has developed a real-time collaborative application, which allows multiple people to edit a console simultaneously, accompanied by identity management. The software consists of an unlimited number of clients and a server. The only database is stored in the server, so everyone's data is synchronized with the server's data. When a user logs in, the server automatically generates a set of text bytes in the specified format based on the current database information and sends it to the user's client, which will execute different function. Our program "solve" the challenge, because it allows the real-time data uploads for multiple people, which is very efficient for sharing information.

Link to Project "Demo"

Detailed Project Description

Our team has developed a real-time collaborative application, which allows many people to edit a console simultaneously, accompanied by identity management. The software consists of one server and an unlimited number of clients. The only database is stored on the server, so all clients have to get the information from the server. Through this, everyone's data is synchronized with the server's data. Each user has to enter a password through the client, and the server will block the access from unauthorized users who entered incorrect passwords. When a user logs in successfully, the server automatically generates a set of text bytes in the specified format based on the current database information and sends it to the user's client. The user's client will automatically parse and materialize this text into a list box. The fields in the list box include Date, Time, User, and content, and the user can add a new row, edit the contents of a cell, delete a row, and officially approve a row. Each action does not directly affect the user's list box but sends a different formatted set of text bytes to the server. Only if the action indicated in the packet is legal will the server allow the packet to affect the database and send the latest Listbox data to each client afterward to synchronize the data on each client.

Every time a new record is successfully added, it is automatically recorded into the current time and the user name of the operation, which facilitates the process of console operation. When a user attempts to edit another user's record, a request is sent to the server, which forwards the request to the other user's client, whose record can be edited only if the user allows it. Official approval of a row can make a row of records never to be modified again, and this action can only be initiated by the server.

The permission-based multiple simultaneous console editing feature implemented in this program can be applicable in various situations. For example, in the current record-keeping approach implemented for human spaceflight, each member of the flight control team creates and maintains a console log. However, flight control members are unable to view others' logs in real-time. They cannot easily synchronize and compare log information. The functionality of this software satisfies these essential aspects of the need, providing value to the scientific community and the public by providing access to needs such as these.

Space Agency Data

We do not really use data from space agency, but the form of output we are using is the same as the video below:

link to the video:


https://www.youtube.com/watch?v=bQdpfA0Wsho


The reason why we use manage the output in this form is because it is clean and neat. Since our program is basically a platform to share the console logs and information like that, we try to make the out look as simple and clear as possible. 

Hackathon Journey

This Space Apps activity is a great experience for us. In these two days, we learn how to complete a big project like a real coder - researching, collecting resources, designing the project(what are the functions, class, structures, what algorithm and tools we are going to use), separating the works, testing the code, making optimization while coding, and of course completing the project in time. It is such an inspiring global event, which makes us feel like we are part of something big. We were inspired to have the experience to collaborate with others to work on a big and contributing project, and to participate in such a meaningful event. We chose a challenge that was the most relevant to what we've learned and what we can accomplish, because we really want to try with the best of our ability and pay all the effort to actually complete a project, rather than just "having an experience".


In the beginning, after designing the project, we thought about using python or c++ to finish this challenge - we thought c++ is rigorous and strict, and python is very flexible(especially with photos and sounds). Later we find it hard to create an good app with c++ in two days, and one of our member suggested to try a new language that he learned before - Easy Programming Language (EPL, 易语言). It is a Chinese programming languages and it is extremely efficient, easy, and user-friendly. With the new programming languages, we are making progress much faster than before. Additionally, we learned that we can try with another approach on a problem rather than sticking on one thing.

References

https://www.youtube.com/watch?v=bQdpfA0Wsho

https://history.nasa.gov/afj/ap11fj/01launch.html

Global Judging

This project has been submitted for consideration during the Judging process.