Electronic trading firms now operate data centers across the globe, each with unique GNSS satellite views. GeoPi aims to provide firms with a web-based platform for 3D visualization & management of geolocation data from multiple sources. The goal is to offer a unified web dashboard that not only displays information from multiple receivers but also allows for remote configuration using u-blox commands.
Create a .env file locally in the website directory to store the following:
CESIUM_ION_ACCESS_TOKEN=<your_token_here>
API_BASE_URL=<your_api_url_here>
cd into the website directorynpm installFor development:
npm run devFor production:
npm run buildnpm startpip install requirements.txtpython3 master/TCPCommServer.pypip install requirements.txtpython3 node/Node.pypip install requirements.txtpython3 master/app/App.pyWe host the TCP communication server, the Flask API, and the website on an EC2 instance connected to a PostgreSQL RDS instance. This trio is the powerhouse of the project, handling all communications with devices, storing all data in the database, and serving the frontend.
Each Raspberry Pi device runs a script that allows it to send GPS data to the TCP server. The server then stores this data in an SQL database on RDS. The Flask API serves as the communication channel between the frontend and the SQL database/TCP server. The website recieves data from the API and can also send u-blox configuration commands back to the API which is then sent to the server to execute on the corresponding device.
The website uses CesiumJS with Cesium ION to display a 3D rendered globe with various entities like satellites and connected devices. The internal API uses the OpenWeatherMap API to fetch weather data for each device location.
Connected devices can be configured using u-blox commands sent via ubxtool. The frontend will display outputs from stdout and stderror in the device cards.
node/Node.pymaster/app/App.pymaster/DatabaseHandler.pymaster/TCPCommServer.pyThese Svelte components form the core of the web frontend for a geolocation data management and visualization application. They provide an interactive interface to visualize devices and satellites on a map and manage them.
components/CesiumViewer.sveltecomponents/DeviceCard.sveltecomponents/SatelliteCard.svelteApp.svelteAndrew Shusterman
Apoorva Aditya
My name is Apoorva Aditya, and I am a senior in Computer Science at the University of Illinois at Urbana-Champaign. I have experience working as a software developer intern at HERE Technologies and Fetch Rewards Inc. I have taken courses on Distributed Systems, Artificial Intellligence, Machine Learning, Interactive Computer Graphics, Database Systems, etc. I am most skilled in the Python, JavaScript, Dart, Kotlin, and C++ programming languages. I have experience working with Angular, React, Flutter, Android for frontend and Flask, Scala, Apache Flink, and Go for the backend. I am interested in learning about high frequency trading and other areas in finance too in general.
Atharva Naik
My name is Atharva Naik, and I'm a senior studying Mathematics & Computer Science at the University of Illinois Urbana-Champaign. I'm particularly interested in the mathematics of computer science (pure math, CS theory, and algorithms). I've taken courses on Artificial Intelligence, Machine Learning, Data Mining, Algorithms, Real Analysis, and Combinatorics. I have experience in Data Science and SWE working at Ameren and Panasonic respectively. I'm proficient in Python, Java, and C++, and I'm currently learning JavaScript.
Parth Saxena
My name is Parth Saxena, and I'm a graduate student pursuing an M.S. in Computer Science at the University of Illinois Urbana-Champaign. I've specialized in big data and artifical intelligence during my academic career, but I'm also greatly interested in the infrastructure behind high-frequency trading. I'm skilled in C/C++, Python, Java, and JavaScript. I have experience working with various database systems and cloud providers including AWS, GCP, and IBM Cloud. My work experiences have mostly been with startups including Robin.io (Acquired by Rakuten) and Torch Sensors.