Kawane Events Creator Portal — Part 1

Marc Cocchio
5 min readDec 15, 2023


I was sitting at a low table on the tatami in a 110-year-old house, passionately explaining the details of my summer intern assignment to my friend, Shiro. He grinned, as a shiny new idea formed in his head, leaning in intently to hear more about my own project.

Earlier in the year, I had wriggled my way into working with a local software development company. It’s about an hour west of Tokyo on the bullet train. In a casual interview, I was told outright that neither my skills nor experience could currently offer anything to their company at the time. Fortunately, the owner liked me.

Under the guidance of their lead developer, I started working on some projects as a kind of intern or trainee. On August 9th, I was assigned this internal web app as essentially excellent hands-on training. “Instead of following more tutorials and courses, why don’t you build this for some real-world experience,” they offered.

Summer project — For attendance management, employees can use our internal chat in advance. They report vacation and compensatory time off, but I want to create a web system that works with Google Calendar.
Basic translation: For attendance management, employees can use our internal chat in advance. They report vacation and compensatory time off, but I want to create a web system that works with Google Calendar. PHP, Backend Laravel, Front Blade, bootstrap.

I dove deep into Laravel with limited PHP experience, but a decent amount of Python/Flask for MVC knowledge. I powered-up my VS Code with recommended extensions for working with this framework. I discovered the Spatie Google Calendar package. I set up a Google service account. I filled an entire notebook with my chicken scratch handwriting.

On September 9th, exactly a month later, I audibly cried out loud, “Yaaaas!” when I successfully created my first event on a Google Calendar using my app. The other passengers on the bullet train pretended not to hear me.

The aforementioned chicken scratch. Follow these notes and make your own!

While working a regular nine to five, building this attendance form app, taking Harvard’s CS50 and, most importantly, being present for my family, I took on a new project. Shiro’s shiny new idea.

Shiro and his wife had spent the better part of the year successfully assimilating themselves in a small town in the literal middle of Japan. Long term, they’re opening a guesthouse in a massively renovated 120-year-old house.

The town is called Kawane. This town has both the best green tea and the best night sky in all Japan. I think it’s seriously some kind of official rating. They are a tight-knit and friendly community, rich in culture, and welcoming to all visitors.

Residents in this town hold a variety of wonderful events, ranging from traditional festivals to outdoor yoga.

The problem: On one given Saturday evening, there may be three concurrent events. Residents can only be at one place at a time, so the hosts end up with only a third the expected attendance. Hosts and attendees collectively chuckle when no events are scheduled the following Saturday. If only they could coordinate!

The additional problem: Visitors, or tourists, coming to Kawane don’t have a central, nor updated, place to see local events. Their chosen accommodation may have a few posters or pamphlets for upcoming events, but those are often neither all inclusive nor up-to-date. If only they could scan a barcode, and see one simple (and familiar to most) calendar.

Another challenge: Most of the “event creators” in Kawane do not have a PC. Most do not have a google account. For many, basic navigation of a website and inputting details in a form are demanding tasks. This app needs to have a very simple UI, seamless UX, and minimal necessary user inputs. Some users could be using a flip-phone!

Note that I didn’t write intuitive UX. This kind of intuition a user may have, if they have used computers and smartphones extensively in their life. Many in Kawane do not fall into this category.

By now, you have likely figured out Shiro’s shiny new idea. That’s right! Written in PHP, a “model-view-controller” Laravel 10 framework app with Breeze (lightweight authentication scaffolding package), Bootstrap (front end), Blade views, EloquentORM for the MySQL database, using composer to manage the Spatie package to connect to a Google service account’s Calendar. Maybe dockerize it and host it on a GCS Fedora VM with nginx?

Well, maybe not that specifically. Shiro’s idea was essentially a portal in which event-creators could easily create events on one global calendar, for all to see.

If you have not heard of a CRUD app, it is a system that allows users to Create, Read, Update, and Delete data. It provides a user-friendly interface to add new information, view existing data, modify records, and remove entries within a database or application. These four basic operations form the backbone of data management, enabling users to interact with and manipulate information effectively.

To really simplify things, I was going to build a CRUD app, minus the RUD. Logged-in users can update their public profile information, which would then be appended to any future events they create on the calendar. Users can create unique events and view the public calendar.

Paper wire-frames

If users need to Update or Delete their events, they can directly communicate with one of the local admins. They can, in turn, can make direct edits to the global Google Calendar).

Spoiler alert — I built it and it is live at the URL below, which is a pretty cool URL, you must admit.

Part II is going be some of the technical stuff I learned, as well as feedback and testing.

Kawane Events — Part 1 :: Part 2 :: Part 3 :: Part 4



Marc Cocchio

Both a creative and critical thinker, I am a Python programmer, UX designer, and woodworker, based in Japan.