DEV Community


[Treflor] - Ultimate hikers guide (not-complete)

hiranthar profile image нιяαитнα ・4 min read

A little story

When I was 1st year in the university, I went on a camping trip with my friends on a vacation. We were so excited about the journey. oops I forgot to tell where we went. so we went to the place called chariot path in Sri Lanka. It is a very beautiful place to go for a holiday camping. green plain, mist, cool environment, fresh air, hot coffee, no social connection due to low signal ❤️ truly I cannot explain that feeling.

Chariot Path
Chariot path2

When the night with full moon, that place will more lovely. look at the second picture. Did you see another mountain peak?? That is called Sri Padha (adam's peak - I don't like this name anyway) That mountain looks so lovely in the night with the full moon. We can have a lovely view of it from the viewpoint of the chariot path. look at the picture below

Sri padha

Hah enough talking, I found my project idea from the chariot path for my 2nd-year group project. We faced this problem, to the top of the chariot path, only one of my mates knew the road. Because it is a jungle area and we had to find the path. So I thought to search on google. I had a very low signal strength on my mobile. however I did it. so here is what I found.

Sri padha

OMG, No path inside to the jungle :/ even by foot. So I kept that in my mind. We had to build a project for the 2nd-year group project. I got a nice team. they are prabhani, choolaka and yashan. I proposed my idea to the team and the supervisor. they agreed with it and we started to work on it. we searched alternatives and did not found any good app for that support for Sri Lanka. There is the moment where treflor was born.

What I'm building

Sri padha

The ultimate hikers guide.
So this is how our app works. users can use our app by sign in or without sign in. unauthenticated users have limed features like view routes, guides, open a help ticket, view images like that. after sign-in users can start a journey using the treflor mobile by providing necessary data such as destination, origin(auto fetch available), a title a short story like that. mobile app track and cache user's GPS location even in background with permission of user. And also treflor show a path to the destination by using google direction API and other users previously collected routes. actually mobile app fetch the route and landmarks from the backend and persist it inside the mobile app for offline use. when the user is on the journey, the user can add images to his route paths, and add landmarks he/she found like waterfalls, ponds, caves like that. then the user is back to the home, he can modify images he/she added and the user can share his journey with others. then others can do things like view details, images, rate or follow that route that the previous user gone etc. this is a community-based application. so the community can report useless records and keep space clean. we were planed to design a mobile app, a web app using Vue and backend using node js

How I built it

I build the NodeJS Rest API and treflor mobile app using android native developments. And I didn't participated to web frontend because I didn't interested in that

For the NodeJS app I used the ExpressJS framework and MongoDB as the primary database. and as the storage I used google cloud storage. for authentication, we used local and google sign in to keep our users more comfortable. to handle that easily I used passport js. And I deployed it on Heroku and nothing much to tell about backend rather than logics and queries.

In the mobile app I used native android development and jetpack libraries. I chose language as kotlin because kotlin + java makes us powerful java right :love: I used kotlin coroutine for multi-threads on the mobile app. I designed the app in a reactive style using Live Data and MVVM structure using the lifecycle library. for the caching I used room ORM and shared preferences. And to handle network calls, I used retrofit. and there was a background service to track the user's GPS. I designed the tracking part offline as much as I can because users can have low signal situations.m.. I think there are no more things to tell.

Sri padha
Sri padha
Sri padha

Demo Link

you can download a build from here

Link to Code

Discussion (0)

Editor guide