Welcome to the Bikenest Repository. This project is working on a bicycle parking app. Imagine a locked cage for bicycles. Users can book places for their own bikes in it. Account creation, reservations, payment and locking and unlocking of the cage + their bike spaces inside should be possible via the app. The goal is a working Proof-of-Concept from Frontend to Backend, including the process of locking/unlocking using real hardware.
The project is created as a work as part of a student project, carried out by Prof. Riehle at the Friedrich-Alexander University of Erlangen-Nuremberg.
We go for a standard Frontend/Backend approach where the Backend serves the Frontend with data. The main purpose of the Frontend is booking spots inside a Bikenest and accessing them. To ensure communication between the Backend and Hardware we develop a small server application that will be deployed on a RaspberryPi.
The folder structure is as follows:
- /Backend/: contains multiple microservice projects developed with the Spring Framework
- /code/: contains the Frontend Application developed with Expo (ReactNative / JS)
- /raspi-server/: contains a small python application that communicates with the Bikenest Hardware by a RS232 interface and provides a http server for communication with the Backend Server.
- Download a release or the current project repository.
- Build the Backend Project (for detailed instructions visit Backend)
- Install dependencies of the raspi-server Project (for detailed instructions have a look at the README.md in the raspi-server directory)
- Build the Frontend (React) Expo
- Backend: Navigate into the
Backend
directory. Run therun-release.bat
(or run-release.sh for UNIX based systems). - Frontend: Navigate into the
code
directory and install the dependencies needed viayarn install
. After everything is set up, start the Expo CLI viayarn start
. Download theExpo Go
App in your appstore and scan the given QR-code with it or use an emulator on your pc. - Raspi-Server: The flask server can be started by running
python app.py
. Note: the server will try to communicate with the Bikenest Hardware via a serial connection. Without access to the hardware, the application will not work correctly!