An interactive Android app to navigate your college campus β buildings, floors, rooms & canteen menus, all in one place.
Campus Explore Page
β
βΌ
πΊοΈ 3D Campus Map β Isometric / 3D view of all buildings
β (tap a building)
βΌ
ποΈ Building Details β 2D floor plan with floor tabs
β (tap a floor)
βΌ
π Floor Details β Offices Β· Classrooms Β· Canteen
β (tap canteen)
βΌ
π½οΈ Canteen Menu β Food items with prices & categories
- πΊοΈ Interactive 3D/Isometric Campus Map β tap any building to explore
- ποΈ 2D Floor Plan Viewer β custom Canvas-based rendering with room tap support
- π Room-level Navigation β offices, classrooms, canteen all linked
- π½οΈ Live Canteen Menu β food items, categories & pricing
- π¦ JSON-driven Data β all campus data loaded from local assets
- β‘ ViewModel + Repository pattern β clean MVVM architecture
app/src/main/java/com/bms/college_explore/
β
βββ ui/
β βββ map/
β β βββ CampusMapFragment.kt # 3D isometric map with building markers
β β βββ MapViewModel.kt # State & data binding for map screen
β β βββ BuildingMarkerAdapter.kt # Renders building pins on the map
β β
β βββ floorplan/
β β βββ FloorPlanActivity.kt # 2D floor plan viewer with floor tabs
β β βββ FloorPlanView.kt # Custom Canvas view for room rendering
β β βββ RoomClickListener.kt # Interface for room tap events
β β
β βββ canteen/
β β βββ CanteenMenuFragment.kt # Displays food items & prices
β β βββ MenuAdapter.kt # RecyclerView adapter for menu list
β β
β βββ common/
β βββ BuildingData.kt # Shared data class definitions
β
βββ data/
β βββ models/
β β βββ Building.kt # Building model (name, location, floors)
β β βββ Floor.kt # Floor model (number, rooms)
β β βββ Room.kt # Room model (id, name, type, bounds)
β β βββ MenuItem.kt # Menu item (name, price, category)
β β
β βββ repository/
β βββ CampusRepository.kt # Loads campus JSON from assets/
β
βββ utils/
βββ MapUtils.kt # Isometric coordinate helpers
βββββββββββββββββββββββββββββββ
β UI Layer β
β Fragment / Activity / View β
ββββββββββββββ¬βββββββββββββββββ
β observes
ββββββββββββββΌβββββββββββββββββ
β ViewModel Layer β
β MapViewModel β
ββββββββββββββ¬βββββββββββββββββ
β requests
ββββββββββββββΌβββββββββββββββββ
β Repository Layer β
β CampusRepository β
ββββββββββββββ¬βββββββββββββββββ
β reads
ββββββββββββββΌβββββββββββββββββ
β Data / Assets β
β campus.json (assets/) β
βββββββββββββββββββββββββββββββ
Pattern: MVVM Β· Repository Β· LiveData / StateFlow
Renders an isometric projection of all campus buildings. Uses MapUtils.kt for coordinate conversion:
screenX = (col - row) Γ tileWidth / 2
screenY = (col + row) Γ tileHeight / 2
A fully custom View that:
- Draws room rectangles per floor from
Floordata model - Hit-tests finger touch against
RectFroom bounds - Fires
RoomClickListeneron valid tap
Loads JSON from assets/campus.json on an IO coroutine:
withContext(Dispatchers.IO) {
context.assets.open("campus.json").use { stream ->
Gson().fromJson(stream.reader(), CampusData::class.java)
}
}Displays menu items grouped by category with prices. Backed by MenuItem.kt data model.
data class Building(
val id: String,
val name: String,
val gridCol: Int,
val gridRow: Int,
val floors: List<Floor>
)
data class Floor(
val number: Int,
val label: String,
val rooms: List<Room>
)
data class Room(
val id: String,
val name: String,
val type: RoomType, // OFFICE | CLASSROOM | CANTEEN | LAB | OTHER
val bounds: RectF
)
data class MenuItem(
val name: String,
val price: Double,
val category: String,
val isAvailable: Boolean
)- Android Studio Hedgehog or later
- Min SDK 24 Β· Target SDK 34
- Kotlin 1.9+
# 1. Clone the repository
git clone https://github.com/YOUR_USERNAME/campus-explore.git
# 2. Open in Android Studio
File β Open β select the cloned folder
# 3. Place your campus data
cp your_campus_data.json app/src/main/assets/campus.json
# 4. Build & Run
./gradlew assembleDebug// build.gradle.kts (app)
dependencies {
// ViewModel & LiveData
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0")
implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.7.0")
// Coroutines
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")
// JSON parsing
implementation("com.google.code.gson:gson:2.10.1")
// Navigation Component
implementation("androidx.navigation:navigation-fragment-ktx:2.7.6")
implementation("androidx.navigation:navigation-ui-ktx:2.7.6")
// RecyclerView
implementation("androidx.recyclerview:recyclerview:1.3.2")
}Built for BMS College of Engineering to help students, staff, and visitors navigate the campus with ease.
Made with β€οΈ for BMS College Β· Bengaluru