727 Lunar Logs

High-Level Project Summary

We created a platform for realtime collaboration of documents for users to log their events. It provides staff to view and log their individual observations or events into the platform. It allows misssion-critical information to be queried by staff of the flight mission to be real-time as the information could be important for the mission.

Detailed Project Description

The proposed platform let users the ability to edit logs in real time. Not only it allows users to edit text docs, it also allows users to upload files on our platform and serve them staticly. Users can create their own entry, while spectate other people's logs.


We relate it closest to Google Sheets, where users can edit documents in real time. There are large similarities between Google Sheets and our platform. The obvious one being real-time editing of documents. One functionality that Google Sheets lack is log editing permissions. For Google Sheets, every permitted user can edit every cell's content. For our platform, authors can only edit their own logs. One way to think about it is every author has their own cells and it is limited to them for editing.


For our backend, we used Django REST Framework to create our HTTP endpoints and processing them. We use DJ-REST-AUTH to establish basic authentication which can be easily extended to better authentication services. For the real-time functionalities, we looked into the websocket protocol, which its bidirectional propagation design enables real-time communication. Hence, we adopted Django-Channels, which is a library which provides websocket protocol communication.


For our frontend, we used React.js and Chakra UI. As we needed to upload file, we used React Dropzone to enable the feature of 'Drag and Drop'.

Space Agency Data

The EVA Console Log video given helps us have a proof of concept on how the frontend should be structured.

Hackathon Journey

This Space Apps experience has been tiring and exciting. Our team choose this challenge because it is a mixture of old and new experiences for us. By old, we mean that we have experience in developing web-apps. By new, it requires new knowledge of approaching web-apps which requires real-time interaction.


The approach was to integrate websockets with HTTP, that way we can establish a REST API while still integrating real-time functionalities for our web-app.


For our team, there was a lot of challenges along the way. We equally distributed our responsibilities among teammates. Each person works on individual models. For our REST API, our frontend teammates will need to have knowledge concerning the endpoints and payload for respective endpoints. Hence, we set up a room for us to communicate immediately to clear up any misunderstood information.


Here I want to thank my teammates for their dedication these two days.

References

Frameworks used:




  • Django
  • Django REST Framework
  • Django Channels
  • Django REST Framework Simple JWT
  • DJ-REST-AUTH
  • React.js


Tools used:




  • Postman/"curl" command
  • Git versioning tool
  • Visual Studio Code

Global Judging

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