GitHub

Ikuyo: Plan Your Next Trip

It has been many months since I started this side project called Ikuyo (source code in GitHub). I think I’m now relatively satisfied with the feature set to do a write up. Ikuyo is a web application for made to help and collaborate on travels.

Features

Ikuyo currently offers the following features:

  • Planning activities, accommodations, and day plans in a timetable view
  • Viewing plans in a list view and on a map
  • Commenting on individual activities, accommodations, and day plans
  • A basic expense tracker
  • Sharing and collaboration capabilities

Timetable View

Timetable view of this example trip

In the timetable view, you can schedule your activities, accommodations, and day plans. I’ll typically start with day plans, which offer a macro-view of what to do each day. For example, perhaps day 1-3 might be for one location, and day 3-5 for another. Having an AI chatbot open in a separate tab, checking its suggestions, is incredibly helpful for planning daily activities.

After outlining the day plans, I list the specific activities in the timetable. The timetable interface is designed to be familiar, similar to Google Calendar or Microsoft Outlook. Day plans and accommodations function like “full-day events,” while activities are the actual scheduled events.

In timetable view, you can drag-and-drop the activities to reschedule them to other timings. I found this feature greatly simplifies rearranging plans.

When creating activities, you can set location coordinates, allowing them to be viewed clearly on the map. While I feel there’s room for improvement here, I’m waiting for my trip plan to evolve organically before implementing further enhancements.

List View

List view of this example trip

List view is particularly useful when going on the trip. This is because it will be focused on the day itself and it will also highlight the activity that’s active at the current time.

Sharing, Collaborations, and Comments

Additionally, you can share your trip with others (though it doesn’t currently notify them) and add comments to activities, accommodations, and day plans. Furthermore, changes will be reflected instantly. This way, one can collaborate easily on the trip.

Tech

Ikuyo is built on top of InstantDB, a real-time database. This ensures that when you collaborate with others, all updates are instatly live for everyone. The front-end is built with React, using the Radix Theme component library, Wouter for client-side routing, Zustand for the client-side store, and MapTiler for the maps. There is no separate back-end layer. The front-end connects directly to InstantDB. Consequently, my “back-end” logic is embedded either in the front-end codes, or in the database schema

Story

Initially, this project was built for planning trips together with my then-girlfriend. We’ve gone on several trips planned using this application, but there weren’t many features back then. We broke up a few months ago, and the project stalled for a while. One day, I decided to book my next trip to Japan for October this year. It will be yet another long trip, just like the Japan 2024 trip; that’s why completing this side project is now crucial for my trip planning. So far, I’m happy with the feature set, and I’ve started planning them using this application.

The project name itself is named after “Kita Ikuyo“, a character from the series Bocchi the Rock!, where her given name has same reading as “行くよ” (meaning “let’s go”).

Conclusion

When you’re about to plan for your next trip, do consider trying it on Ikuyo. If you find any issues or suggestions, let me know!

On separate post, I’ll write on the technical challenges I faced when developing this project.

Links

Setting Up Git SSH Key on Windows

I recently bought a new laptop and went through the hassle of setting up Git SSH key again. There are many guides somewhere on the Internet but it’s all over different places and they tell you to do different things with different outcomes. Also, the guide from GitHub is less than ideal as it requires using “Git Bash” which I do not like. So I’m writing things down for my future reference.

Nikku

19 April 2019

Nikku is my latest side project that I’ve been working on since early April 2019. It is a BRSTM player on the web.

November 2016

November was the month of another endings:

  • Final goodie bags from CEC, NTUSU, hall, NTUBS.
  • Another FYP deadline, though not as important as the one in October
  • The final final exam in NTU

Some other events:

  • Signed work contract. It’s a 14-page long terms where wordings seem repetitive yet extraordinarily comprehensive. A sentence might contain tens of adjectives. :P
  • Collected room key. That day I travelled to Serangoon to collect the room key from my aunt. The trip was quite productive as I make use of the long travel time to read the novel So Long and Thanks for All the Fish
  • Won ice-skating tickets (again) and I didn’t use it (again) since the expiry date was very soon (like 1-2 weeks after my collection, and it was nearing exam)

Realized that I have free Starbucks drink so I go and claim one. Turns out that I could claim any drink of any size (so I claimed the Venti size :P )

Regarding coursework:

  • Meeting with Prof Miao again where she offered me to consider taking PhD with her (though I expect the meeting was talking about my FYP report, in the end, but she said it was already okay)
  • Submitted CZ4042 Project 2. This project was actually run multiple and sufficient experiments such that you discover the best parameter that produces the best accuracy. Not quite fun, as I would just tune the parameters of a pre-written Matlab program, gather the result, and spend a lot of time doing the report. The report part was really not fun.
  • Submitted CZ4032 Project. Yeah, like finally, after too much meeting and too much demands from the boss.
  • Submitted CZ4073 Assignment 3.

The day of big spending

There was one day, after I bought my flight tickets, I spent a lot of money for various stuffs: paying flight tickets, collected micro SD card, and bought new earphone from Challenger JP, bought lots of groceries from JP in preparation for reading week. In total, there were around $200 was spent.

November was also the month where I really submitted FYP Amended Final Report. Good thing is that the examiners and my prof asked for softcopy. Saved paper & money :)

Just before the reading week started, I joined JCU GameJam with Dian, Pentium, and Aristo. It was a game jam, mainly using Unity, but every one of us except Aristo had any experience with it. So, on the day, we went there by MRT and a 10-minute walk. The school itself felt quite new though quite ulu. One thing I realized is that the area was around the Singapore’s Zika outbreak area. Oops.

The Gamejam started at 6 pm. But Pentium came in late, and Aristo is still rushing his assignment report during that time, where me and Dian supposed to follow Unity’s tutorial. Few hours passed by and we finally get started for real, being guided by Aristo. By daylight, we had somewhat slept for a while and finished our own stuffs. Meanwhile, I was waiting for other people to finish their part.

In the morning, when Aristo finally integrated the main character to the game, we were amazed :P He implemented objects orbiting around the main character. Woah. No wonder it took a long time. In the afternoon, progress was still slow and the level were badly designed by me. In the final 2 hours, something terrible happened. Somehow, the synchronization with GitHub failed to update the configurations of Unity. (hint: we included the “meta” file to gitignore; do not do this) After we realized our mistake, the atmosphere became very intense. Basically, we rushed in the final hours to integrate and also build the game. We submitted it in the final minutes and the gamejam was over.

One strange thing about the game jam is that the showcase was on the day after. So we need to wake up early in the morning and came to the place again to “showcase” our games. There was a Pac-Man challenge too, essentially playing the real Pac-Man at the old consoles located in their library. After lunch, we were relocated to a public lecure and then the announcement. We didn’t win anything, even from the lucky draw. So yeah, we went home afterwards.

Anyway, few days afterwards, Coldplay’s concert in Singapore was announced! EXCITED EXCITED EXCITED. I BOUGHT CAT-1 TICKET AT THE FIRST PRE-SALE! 1st row 2nd seat, see how much NTU’s STARS Wars have prepared me for this kind of first-come first-serve (read: kiasu) online situations.

In first half of November too, I continued implemented some requirements for LILY Silver Testbed platform. Now they told me to write documentation. Duh. Luckily they let me see the old documents and I adapted my documentation from that one.

In the reading week, I started to play Tropico 5. Basically becoming a dictator of an island. Building houses, industries, and services. Not as exciting as Simcity but still nice. Though after unlocking every buildings and advancing to the latest era, the game feels dull.

And then there were exams.

  • CZ4073 exam. S/U option is ticked. Not because it was difficult, just because I have S/U left, so why not put effort on others and let this be S/U-ed. Energy saved. I left the exam hall in around 1 hour 30 minutes.
  • CZ4032 exam. More difficult than expected. I suspect a lot of people did not finish the paper.

Then I have around 6 days of nothingness before my last final exam. Started by playing Steam games: Tropico 5. Continued by reading Douglas Adam’s book. Now on 2nd half of So Long and Thanks for All the Fish. It was hilarious: after some Arthur’s love story, the author looks tired of writing and dedicated a single chapter to suggest reader to just skip to the end.

Then I continued studying for the CZ4042 exam on 2 December.

Wikipedia Asian Month 2016. Oh yeah, November was also the Wikipedia Asian Month, for the 2nd time. Since I was not involved in building the tool, essentially I am not really useful this time. I helped the idwiki admins sending mass messages to participants, and I participated by creating 4 articles (to be eligible to the lowest reward).

c4bot

15 October 2016.

It was two days before my FYP report submission. That whole day was spent on proofreading my report. It was very tedious and boring task. To recharge myself, I decided to went up to “the spot” and did a lot of self-talk. “The spot” is basically a laundry drying spot at level 5 in my block where almost no one was ever here. …