Nexis is a fully self-hosted mall management platform currently in development, created for a fictional mall of the same name. It streamlines the shopping experience for users and delivers insightful analytics for store owners. The platform features four unique stores:
- Readon: A library offering a variety of books, pens, notebooks, and other stationery items.
- Vesti: A clothing store which caters to all your clothing needs, from shoes to shirts.
- Cyberion: A tech store featuring a wide selection of phones, computers, and various gadgets.
- Savoro: A food store, your go-to place for all things foody.
Nexis allows customers to effortlessly browse and buy products, while owners can track and assess their store’s performance with detailed, real-time insights.
- Unified Shopping Experience: Browse and purchase products from multiple stores within a single app.
- User-Friendly Interface: Intuitive design with a responsive and engaging UI.
- Secure Authentication: Login and registration with email verification.
- Real-Time Updates: Instant updates on product availability and order status.
- Comprehensive Analytics: View detailed statistics and insights for your store, including sales and customer behavior.
- Inventory Management: Efficiently manage products and track sales.
- Employee Operations: Employees can perform in-store charging operations for physical purchases, ensuring smooth transactions.
- Customer Insights: Access data to improve product offerings and customer experience.
- Frontend: SvelteKit, Tailwind CSS, Bootstrap
- Backend: Rust (Actix-web), Python (Flask)
- Databases: PostgreSQL, MongoDB
Nexis follows a modular architecture, separating concerns between the frontend and backend to ensure scalability and maintainability.
- Frontend: Handles user interactions, routing, and rendering of the user interface.
- Backend: Manages business logic, handles API requests, and interacts with the PostgreSQL and MongoDB databases.
- Databases:
- MongoDB: Serves as the primary database for daily interactions, storing data that employees and users frequently access.
- PostgreSQL: Acts as a data warehouse for storing comprehensive statistics and analytics.
- Node
- Rust toolchain
- Python 3
- MongoDB Atlas account
- Redis
- Mkcert (only if developing)
- Nginx (only if deploying)
- Set the
APP_ENVIRONMENT
environment variable to "development". cd
into the rust backend directory.- Set the settings .yaml files.
- Create the CA certificate:
mkdir cert
cd cert
mkcert -cert-file cert.pem -key-file key.pem localhost
- Ensure you are in the rust backend directory and run
cargo run
. - Type
https://localhost/health-check
in a browser to verify connectivity.
- Set the
APP_ENVIRONMENT
environment variable to "development". cd
into the python backend directory.- Install the API's dependencies by running
pip install requirements.txt
- Set the settings .toml files.
- Create the CA certificate:
mkdir cert
cd cert
mkcert -cert-file cert.pem -key-file key.pem localhost
- Ensure you are in the python backend directory and run
python run.py
. - Type
https://localhost:444/health-check
in a browser to verify connectivity.
cd
into the frontend directory root.- Run
npm install
. - Create the CA certificate:
mkdir cert
cd cert
mkcert -cert-file cert.pem -key-file key.pem localhost
- Create a ".env" file in the frontend directory root, and set
VITE_API_URI_DEV
inside of it. If following this setup guide, it should behttps://localhost:443
. - Set the
NODE_EXTRA_CA_CERTS
environment variable to the root CA .pem file path. If generating the certs with mkcert on Windows, set it toC:\Users\YOUR_USER\AppData\Local\mkcert\rootCA.pem
. - Ensure you are in the frontend directory root and run
npm run dev
.
Ensure that the secret key and HMAC secret in both APIs is the same. Otherwise, authentication on the Python API will fail.
View the Rust API documentation.
View the Python API documentation.
This project is being developed for the third trimester of 2024 at Universidad Rafael Urdaneta by:
- Javier Pérez - Project Manager / Programmer
- David Esber - Database Engineer / Programmer
- Rebecca Bracho - Programmer
- Geanfranco Piccioni - Programmer
This project is licensed under the MIT License. View LICENSE for more details.