"Those who do not remember the past are condemned to repeat it." — George Santayana
⚠️ Note on Repository Visibility & Sensitive File Removal
We are currently in contact with the GitHub team regarding the removal of a mistakenly committed .json file that was included in a previous pull request.
The file does not contain any critical credentials, but it was not intended for publication and we have requested its removal from the repository's commit history.
We plan to make this repository public in the near future once the cleanup process is complete.
Thank you for your understanding and patience!
DAWN is an immersive AI-powered dark tourism platform that allows users to explore and emotionally engage with historically significant yet tragic events. Users interact with AI-generated personas, experience site-based reconstructions, and collect digital memorials.
- Solution Challenge Theme
- Architecture
- Core Concept
- Tech Stack
- How to Run
- Team
| Tourism |
|---|
|
The DAWN platform is designed to provide an immersive dark tourism experience powered by AI, integrating various services using modern cloud-native technologies. Below is a breakdown of the architecture:
Spring BootWeb Server withJWT + RedisauthenticationFastAPIRAG backend for AI persona response generationMySQL (Cloud SQL)as primary DBGCP Storagefor image, letter, and event assetsLangChain + Vertex AI + Pineconefor RAG pipelineFluttermobile app clientDockerdeployment on GCP VM (Compute Engine)
- Flutter: Cross-platform mobile application framework.
- Google Maps API: Enables location-based features.
- Google Design: Ensures UI/UX consistency across devices.
The client communicates with the backend using RESTful APIs and receives both structured content and AI-generated responses.
- Firebase Authentication: Handles secure user login and identity verification.
- Cloud Storage for Firebase: Stores user-uploaded content such as images or letters.
Firebase communicates directly with both the client and server for authentication and media access.
- Spring Boot: Java-based backend that manages user data, historical content, and API endpoints.
- FastAPI: Python-based service for handling AI interactions.
- Docker: Containerization of backend services for portability and scalability.
- LangChain: Orchestrates communication with the AI model.
- Vertex AI + Gemini: Google’s powerful LLM platform for generating historical personas and contextual responses.
- Cloud SQL (MySQL): Stores all persistent data including users, locations, events, and AI-generated content.
- The Flutter client sends user requests to the Spring Boot backend.
- If AI content is needed, Spring Boot relays the request to FastAPI, which processes it via LangChain & RAG and Vertex AI (Gemini).
- Firebase Authentication verifies users, and Cloud Storage manages uploaded files.
- Cloud SQL stores and retrieves all application data.
- AI-generated persona interactions based on historical events
- Guestbook and memory sharing for visited locations
- Digital stamp collection to track historical journeys
- Firebase-based authentication and user data management
- Support for multi-language and immersive content rendering
| Layer | Tech Choices |
|---|---|
| Backend | Java Spring Boot, MySQL |
| AI Model | Python, FastAPI, LangChain, VertexAI |
| Frontend | Flutter (Dart), Google Maps API |
| Storage | GCP Cloud SQL, Firebase storage |
| Auth | Firebase Authentication |
| Deploy | Docker, GCP VM |
| ML Infra | Pinecon |
# 1. Build backend
./gradlew build
# 2. Build and run Docker containers
sudo docker compose up --build# 1. Install dependencies
flutter pub get
# 2. Run the app on the desired platform (make sure a device/emulator is connected)
flutter run -d <device>
We are a four-member team from GDG on Campus CNU, combining strengths across frontend, backend, AI, and UI design.
| Frontend, Team Leader | Frontend, UI Design | Backend, AI | Backend, AI |
|---|---|---|---|
| @yb0x00 | @LBB | @ji-mim | @KwanjoonParkm |


