- Table Of Contents
- Introduction
- Features
- Installation
- App Architecture
- Project Structure
- Credits
- Screenshots
- Contact
Traversee ID is a mobile application designed with the aim of increasing visibility and awareness of Indonesia's tourism potential and empower stakeholders in the industry to better promote their offerings through tourism campaigns.
The app can also provide a personalized tourism recommendation system, allowing travelers to tailor their itineraries based on their preferences and interests. A forum feature can be included that would allow travelers to connect with each other and share their experiences. Lastly, sentiment analysis can provide feedback on tourist attraction, allowing travelers to make informed decisions.
- Authentication
- Login
- Register
- Forgot password
- Campaigns
- Find campaigns
- Filter campaigns by category, location and status
- Register to a campaign
- Submit a link submission to a campaign
- See campaign winners
- Forum
- Create and delete a post
- See posts
- Create and delete a comment on a post
- Like and unlike a Post
- Tourism
- See tourism places
- Filter tourism places by category and location
- Add and remove favorite tourism places
- Get a tourism places recommendation
- Find open trips
- Book a trip via Whatsapp
- Sentiment Analysis
- Get a sentiment analysis of a tourism place
- Profile
- Update name and profile picture
- See registered campaigns
- See user posts
- See favorite tourism places
- Change app language
- Clone this repository
git clone https://github.com/Traversee-ID/traversee-id-android.git
- Contact me to get the
google-services.json
file - Open the project with Android Studio and wait for the Gradle build to finish
- Run the app on your device or emulator
The app is built using the MVVM Clean Architecture pattern. The following diagram shows a summary of the app architecture.
├───core
│ ├───common
│ ├───data
│ │ ├───local
│ │ ├───model
│ │ └───remote
│ ├───domain
│ │ ├───entity
│ │ ├───repository
│ ├───presentation
│ │ ├───component
│ │ ├───...screens
│ ├───theme
│ └───util
├───di
├───feature_auth
│ ├───data
│ │ ├───repository
│ ├───domain
│ │ ├───entity
| | ├───mapper
│ │ ├───repository
│ │ ├───use_case
│ ├───presentation
│ │ ├───component
│ │ ├───...screens
│ └───util
├───feature_campaign
│ ├───data
│ │ ├───model
│ │ ├───paging_source
│ │ ├───remote
│ │ ├───repository
│ ├───domain
│ │ ├───constant
│ │ ├───entity
│ │ ├───repository
│ │ ├───use_case
│ ├───presentation
│ │ ├───component
│ │ ├───...screens
│ └───util
├───feature_forum
│ ├───data
│ │ ├───model
│ │ ├───paging_source
│ │ ├───remote
│ │ ├───repository
│ ├───domain
│ │ ├───constant
│ │ ├───entity
│ │ ├───repository
│ │ ├───use_case
│ ├───presentation
│ │ ├───component
│ │ ├───...screens
│ └───util
├───feature_sentiment
│ ├───data
│ │ ├───model
│ │ ├───remote
│ │ ├───repository
│ ├───domain
│ │ ├───constant
│ │ ├───entity
│ │ ├───mapper
│ │ ├───repository
│ │ ├───use_case
│ ├───presentation
│ │ ├───component
│ │ ├───sentiment
├───feature_settings
│ ├───data
│ │ ├───model
│ │ ├───remote
│ │ ├───repository
│ ├───domain
│ │ ├───entity
│ │ ├───mapper
│ │ ├───repository
│ │ ├───use_case
│ ├───presentation
│ │ ├───component
│ │ ├───...screens
├───feature_tourism
│ ├───data
│ │ ├───model
│ │ ├───paging_source
│ │ ├───remote
│ │ ├───repository
│ ├───domain
│ │ ├───entity
│ │ ├───repository
│ │ ├───use_case
│ ├───presentation
│ │ ├───component
│ │ ├───...screens
│ └───util
├───navigation