A Progressive Web App meant to help tourists to visit the beautiful holiday resort of Cupra Marittima. Gives hints based on user preferences and their geolocation and provides AI support. It is also designed to work offline to support tourists while they are travelling without available connection.
| Tier |
Implementation |
| Backend |
.NET 9 |
| Frontend |
React + Vite, Tailwind |
| Database |
SQL Server Express |
| AI Integration |
Google Gemini APIs (FileSearchStore for RAG) |
| Unit Testing |
NUnit, Moq (backend), Vitest (frontend) |
| Integration Testing |
Vitest (frontend) |
| E2e Testing |
Playwright (frontend) |
- Visual Studio with .NET SDK 9, SQL Server Express (Visual Studio bundled one or another instance)
- Google AI Studio API key (also free tier, but with usage limitations)
- Google FileSearchstore of Gemini APIs created and its identifier available
- Google Oauth client credentials configured to run in localhost
- Facebook Api Key of configured login application
- Smtp service of your choice parameter (to send mails to user)
- Clone the repository:
git clone https://github.com/SPM-25-26/BMR_SPM
cd DFR
- Open project and configure secrets: Open the Update
BMR_SPM.sln solution with Visual Studio, in solutions explorer expand eppoi., then Connected Services, and edit Secrets.json by providing DB connection strings, Google and Facebook credentials, SMTP service configuration, and Google Gemini API key.
- Initialize Database and ingest data:
In
Packages manager console, run:
Then select, as a starting project, Eppoi.Console. Run the console and type I to ingest data from sample APIs into your database.
- Initialize AI store for grounding:
With your Google AI studio api key, call Gemini APIs to create a FileSearchstore (see Google documentation), then configure its identifier into server secrets. Run again the
Console solution, type 'G' to send ragdata to Filesearchstore with Gemini APIs.
- Run the App (development mode):
Install npm modules for frontend:
cd eppoi.client
npm install
From Visual studio, select the Server+Client profile and run the application.
- Run the App (production mode, to test PWA offline features):
Select the
eppoi.Server profile and run the backend. Then, from console:
cd eppoi.client
npm run build
npm run preview
- Run backend unit tests:
In Visual Studio, from
Test menu select Test explorer, select Eppoi.Server.Tests, then click on Run.
- Run frontend unit tests:
From console:
cd eppoi.client
npm run test
To run while developing, npm run test:watch runs continuously while changing source code.
- Run frontend integration tests:
Run the application and login. Open browser developer tools and copy, from localStorage, the authentication token, then open file
run-integration-tests.ps1 and update INTEGRATION_AUTH_TOKEN variable with it.
Then, from Powershell console:
cd eppoi.client
.\scripts\run-integration-tests.ps1
Please note that the token expires after some minutes; this is just for demo purposes, but should be made better with automatic authentication scripts and a sample seeded database.
- Run frontend e2e tests:
cd eppoi.client
npm run test:e2e:ui
This will run Playwright tests; one can also setup headless or headed mode (instead of ui) for CI with Github workflows.