Vincent Ritter

← back to projects

Simple Schedule

A simple way to manage bookings, appointments and gatherings on the web. Although, now it's over and there won't be anymore parties. Thank you to everyone that has been along for the ride.

Thank you, it's been a journey!

After many years, we've closed our doors. The party is over.

From meet-ups, multi day events to pyjama parties. Simple!

Simple Schedule was a new and simple way to manage bookings, appointments and gatherings. Even superhero dress up parties!

Born from a 'scratch your own itch' idea to learn more and broadening my skills. Which I then took with me on my new ventures and projects.

Thank you, Simple Schedule, for being a light in my exhausting few months of complete and utter stress during a dark time in my life.

Project posts JSON/RSS Feed...

Good stretch with Simple Schedule today. Did the 'My Attendees' page, working nicely. Some other tweaks across the site on the backend. Next stop is 'My Events'.

Finding it difficult to find the time to keep up with blog posts for my code challenge.

Worked on Account Profile and Account Settings more. They are now complete. Have cut out the profile image for now.

Next up I'll be adding Attendees... Also populating that Trello board.

Account setting page sorted for Simple Schedule. Working. Cut the 'date format' feature for now, as I'm using an easy to understand way "Apr, 1st 1976". Everyone will understand that.

I wanted to work on Simple Schedule tonight but instead having an early night so I can push even further tomorrow. Nothing like an early night.

Simple Schedule - Day 16 & 17. Register, Login and sharing progress.

It's been a few days since the last post. Happy to report good progress the past few days with both learning and getting something up and running that works… slowly!

I’m really happy that I’m learning Rails this way and don’t regret my decision to go down this route!

There are 22 commits in the Rails project now, with the majority (95%) over the past few days.

Register & Login

I rewrote the whole code for this 3 times… from scratch. I wanted to get it right. Maybe a bit too much, but I also had to make sure it’s secure as it can be.

However, I am happy that I took the time. I feel it’s at a enough polished state to actually show you.

As it was my first time pulling in assets from my static site and having two different templates for the dashboard, register and login sections I had to do a bit of digging to get that all working nicely. Didn’t take long to find:

render :layout => "account”

Easy enough! I can even call an action:

render 'index', :layout => "account”

Awesome. Yes, I’m new to Rails development! These are in various of my controllers. That basically tells which layout I want to render on the page. Useful!

The database design was… interesting! I am super used to camelCasing everything and found myself doing exactly date. So for example:

  • emailIsVerified
  • authTokenDigest
  • emailChangeAt

I could do it that way… but it quickly looked like garbage. Instead I now seem to be doing it the better way.

  • emailIsVerified -> email_is_verified
  • authTokenDigest -> auth_token_digest
  • emailChangeAt -> email_change_at

So, before:

And… after:

It reads so much better! I’m quickly adopting my methods to use this style too. I’m running Sublime Text, so I don’t really get hints or anything and found that renaming these to be so much easier on the eye… and actually remembering, even when guessing. Yeah, I could use RubyMine by JetBrains… but I also want to learn and not get too much help. Plus, ermm, it is super ugly to look at.

Database migrations are cool, but have also been a pain point… but now I learned my lesson and am way more confident how to set these up.

For local dev I actually decided to use Postgres as it’s just easier for me. I run a nice app called Postico! Really great! I can even log into my database on Heroku.

The reason for re-writing pretty much everything: It’s good to get something to work… and then learn from it and make it much better.

Sharing is caring

With the frontend of the website developed out in the open I wanted to do something similar for the app too. However, it had to be at a stage where it made sense.

Having completed Login and Registration I think it is time to let people in to the ‘alpha’ phase of the project. Although, I wouldn’t even call this anywhere near an alpha. You’ve been warned!

So… for registration head here: https://my.dev.simpleschedule.net/register

Registration, Login and Logout works fully. Registration will send out an email verification email. Login does something similar and will send you an authentication token. These emails are bare. I’ll work on those at the beta stage.

You’ll be logged in straight away, but I may change how that works down the line.

On top, I have decided to open up a public Trello board so you can see what I’m actively working on and will add to this as I go. You can see it here:

https://trello.com/b/fX4lqdxI

Caution

If you decide to play around with the dev site, just be aware that I will be making many changes between now and beta. Things will break! Things will not work! Things will not look right! This is all as expected.

Your account might get deleted in the process as I work through it.

Closing thoughts

I’m having a good time building this. I am not sure what it is about development… but it really drives me. I am not perfect but I love learning and solving problems.

Keep your eyes peeled on the Trello board and feel free to “break” stuff.


If you like to contribute, please email me or let me know via Micro.blog. There is also the Simple Schedule holding site where you can sign up for a beta. On top, there is now a public Trello board with dev site progress. You can visit the 'pre-alpha' website to play around.

For other posts on the challenge, check out the links below:

  1. Code challenge - from zero to web app in 60 days.
  2. Code challenge - Prelude and Day 1 - Setting things up.
  3. Code challenge - Day 2.
  4. Code challenge - Day 3. Holding page.
  5. Code Challenge - Day 4. A login page and a few tweaks.
  6. Code Challenge - Day 5. Registration page and preliminary app navigation.
  7. Code Challenge - Day 6. Getting in the groove, new events, MVP considerations.
  8. Code Challenge - Day 7. 'My Events' view.
  9. Code Challenge - Day 8. Burning the midnight oil, loud music and good progress.
  10. Code Challenge - Day 9. Progress, changes and regrets.
  11. Code Challenge - Day 10. There are no events, pricing thoughts and badges.
  12. Code Challenge - Day 11. New logo, further changes to event details and a tiny tweak.
  13. Code Challenge - Day 12. Final frontend stretch.
  14. Code Challenge - Day 13. Choosing Rails, getting into the swing and thoughts on a multi tenancy app.
  15. Code Challenge - Day 14 & 15. Blog post thoughts, passwords and learning.

Worked hard to get Register and Login to work for my Code Challenge app (Simple Schedule) with emails being sent out for verification and login.

You can give it a spin here: https://my.dev.simpleschedule.net/register

Blog post coming tomorrow.

Finding myself rewriting most of the register and login logic... because. Great to do it though! Nothing like learning :) Hope to have it as I want it in the next few days. It was nearly there but I wasn't happy about it.

Great progress with the Login and Register sections for Simple Schedule. Just sorting out the "magic link" login mailer. Most of the logic seems to be working now though. Super happy.

I jotted down the "User" model that I wanted to use, generated the model and db migration... and now I've changed my mind on possibly every field. Typical!

Code Challenge - Day 14 & 15. Blog post thoughts, passwords and learning.

Yes, Day 14 and 15 all at once... What have I been up to is a good question. A lot, but not much at the same time.

Learning

I’ve been learning a great deal about Rails over the course of last week, yesterday and today. I picked up a great book early last year, Ruby on Rails Tutorial by Michael Hartl. Everywhere you go it always seems to be recommended. How right everyone has been!

I’ve been exposed to Ruby with Jekyll for many years and always wanted to build an app on Rails with it. It truly is a beautiful language. Something sublime about it!

Building an app takes some basic knowledge of what you’re building on top (the framework), so I’m super happy that I took the time to work through these exercises. As it’s quite ambitious I wanted to get my feet wet with the book and actually just get through it.

Passwords

Every time I think about passwords I shrug. Sure, things get easier with password managers like 1Password. So I’m not sure if I should offer password creation during registration or just rely on “magic” login links for the time being.

Looking around, people seem to prefer one or the other and there is no clear cut answer of what to use.

Using passwords is easy and so should be magic links. I would log the user in regardless and set a long cookie so you wouldn’t have to worry about it too much.

My conclusion is that I’ll probably offer magic links for the start and then look at passwords down the road… although… quite easy to implement. I just want to keep it simple, so I need to find the right balance.

I’ve been looking at https://draftin.com for inspiration and that seems to be using passwords.

You can see my internal struggle…

Blog post thoughts

If you’re following Brent Simmons via Micro.blog or his website, he’s doing an amazing job for keeping a diary for Evergreen. I feel inspired by this and would like to try something similar for Simple Schedule as I build out the app. I have a feeling that writing a blog post every day will take up a lot of time. There needs to be a balance of sharing and meaningful progress. Hope I can balance that.

Closing notes

Heroku is set up and running, dev urls are there and I am ready to begin to get going.


I wrote this article mainly for myself to follow along when I look back at it at some stage. If you like to contribute, please email me or let me know via Micro.blog. There is also the Simple Schedule holding site where you can sign up for a beta.

For other posts on the challenge, check out the links below:

  1. Code challenge - from zero to web app in 60 days.
  2. Code challenge - Prelude and Day 1 - Setting things up.
  3. Code challenge - Day 2.
  4. Code challenge - Day 3. Holding page.
  5. Code Challenge - Day 4. A login page and a few tweaks.
  6. Code Challenge - Day 5. Registration page and preliminary app navigation.
  7. Code Challenge - Day 6. Getting in the groove, new events, MVP considerations.
  8. Code Challenge - Day 7. 'My Events' view.
  9. Code Challenge - Day 8. Burning the midnight oil, loud music and good progress.
  10. Code Challenge - Day 9. Progress, changes and regrets.
  11. Code Challenge - Day 10. There are no events, pricing thoughts and badges.
  12. Code Challenge - Day 11. New logo, further changes to event details and a tiny tweak.
  13. Code Challenge - Day 12. Final frontend stretch.
  14. Code Challenge - Day 13. Choosing Rails, getting into the swing and thoughts on a multi tenancy app.

Quick update on the Code Challenge

Due to the lack of updates recently I thought I’ll give you all an update.

The last few days have been difficult, not only are we all (family) feeling under the weather, but also my computer screen (hooked up to the Mac mini) decided to give up. My beloved Apple screen! Gone. Dead.

Today, with a replacement screen, I started getting problems running anything within Terminal… pretty gutted. A clean install of macOS seems to have solved the issue though. So I’m working on getting everything on my system at the moment. I didn’t want to attempt using a Time Machine restore.

Anyway, I’m hoping to catch up within the next few days and start giving regular updates again as best as I can.

Sometimes technology seems to get into my way. This year has already been pretty tough, so this seems like another punch below the belt.

Onwards and upwards!

Code Challenge - Day 13. Choosing Rails, getting into the swing and thoughts on a multi tenancy app.

In my previous posts, I was arguing with myself what ‘stack’ I would use for the codebase. I was certain that ASP.NET Core would tick the right boxes. I already know C# and thought I would be fairly comfortable just getting into it.

Installing and launching Visual Studio for Mac was as easy as just downloading it. Yeah, it had to grab some extra stuff… so like in the usual Microsoft fashion it downloaded gigabytes of stuff ¯\_(ツ)_/¯

I created a new project to get me right into it. Faced with a learning curve to get to know the new and improved ASP.NET Core v2, the last time I looked they just rolled out the first RC1 for version 1. That was an exciting time!

Then it dawned on me… I really had to learn a lot. Not too much, but enough to make me re-think my blip of judgment.

I fell asleep that night and actually dreamt about Ruby on Rails… the great podcasts, the amazing community around it and the amount of help found just around the internet. I listen to “The Bike Shed” podcast a lot… well, used to. I have a memory from one of the hosts a few years back saying that they called their newborn “Ruby” because they loved the language so much. Any “C#”’s walking around? Email me!

It was those years that I really longed to learn Ruby and write an actual app using Rails.

This morning I re-visited the Ruby on Rails tutorial by Michael Hartl to jog my memory as it has been some time… oh boy did I get hooked straight away! The book is amazing! So if you’re starting out or need to jog your memory I urge you to buy it! There is also a free online version.

My heart longs for Ruby, I just didn’t let it in enough of fear of being behind on it.

I’m happy I chose to stick to what my deep inner developer wants. I don’t know why I go through this stage with projects… at the end of this I will me more confident than I ever was, I am sure of that!

So with all that out the way, I started the dev build… `rails new SimpleSchedule.App.Rails`.

That’s the splash screen after you first run `rails server`. I really like that! And yeah… I know it’s just a picture… but go on and check out the ASP.NET one… I’d love to show you but Visual Studio is taking around 50 seconds to launch and is beach balling on me… It’s the little things! Nothing like instantly launching Sublime Text and off you go and develop.

Oh, here you go:

I guess a bit more useful… but it decided to add a lot of things for me. And yeah, I can set it up so it starts with nothing…

Anyway, sidetracking there. Visual Studio is nice, but I just can’t get past the little things… they matter in a developers life I think.

Getting into the swing

This is my first full Rails app. There you go, I said it! I did dabble around with it in the past, but nothing ever as serious as this app. I am happy I have taken the plunge… finally!

Today, I just spent most of the day going through the Rails Tutorial, building on that. I think I did this twice already, but I find it’s a great way to get me thinking about it all.

I’ll continue until it’s done and hope to, either tomorrow or the day after, start building out the first few sections of the app. Namely the login and register sections.

Whilst doing this I also played around with Heroku and the Heroku Pipelines. I want to obviously separate the “dev” to the “live” site always. Pipelines seem to tick that box nicely.

I’m planning to share the “dev/staging” url during development as I think would be fun for other people to try and break stuff on the way. You could probably guess the URL. Anyway, I won’t share until the login and register is done, as that is a crucial first milestone. Unfortunately I will probably wipe the database a few times before beta, just for fun!

I’ll need to play a bit more with pipelines but I think I have the hang of those!

Certainly easier than navigating Microsoft Azure. Although, I do like the Azure UI for some bizarre reason.

Hope to have something early next week!

Multi Tenancy

I’ve never created a multi tenancy app. Multi Tenancy basically is an app that allows many users, with one database, each with their own data (to keep that really really simple). You can read up about it here though.

I’m scratching the surface on how to best handle this, with storing user id’s next to each entry (yes and no... and if I want to sleep at night... no) or if I should use something like Apartment which basically creates a new schema in PostgreSQL, which is quite cool.

I do like to write something to handle this myself as I’m not a huge fan of using too many third party gems/plugins. It’s always been like that with me. Even my own iOS apps have no third-party code… just mine (except the Apple frameworks of course).

Let’s see how it goes though. Yet to really nail that database design. I’m used to database design using SQL Server, from Microsoft, which was cool. But I always wanted that code first approach anyway.

Next steps and thoughts

Quick thoughts on Rails is that I’m happy that I bit that bullet. It feels natural and Ruby is a great language!

For the next steps, apart from missing designs like email templates etc, I’d like to get something out to use early next week for people to try. There are a fair few beta sign ups already, which is really great!

I’ll need to think of a way to get feedback before beta too, may it be Slack, Discord or some other medium. I don’t want to be a closed box or anything and I rather develop in the open.

The pressure is on, so I better get going.


I wrote this article mainly for myself to follow along when I look back at it at some stage. If you like to contribute, please email me or let me know via Micro.blog. There is also the Simple Schedule holding site where you can sign up for a beta.

For other posts on the challenge, check out the links below:

  1. Code challenge - from zero to web app in 60 days.
  2. Code challenge - Prelude and Day 1 - Setting things up.
  3. Code challenge - Day 2.
  4. Code challenge - Day 3. Holding page.
  5. Code Challenge - Day 4. A login page and a few tweaks.
  6. Code Challenge - Day 5. Registration page and preliminary app navigation.
  7. Code Challenge - Day 6. Getting in the groove, new events, MVP considerations.
  8. Code Challenge - Day 7. 'My Events' view.
  9. Code Challenge - Day 8. Burning the midnight oil, loud music and good progress.
  10. Code Challenge - Day 9. Progress, changes and regrets.
  11. Code Challenge - Day 10. There are no events, pricing thoughts and badges.
  12. Code Challenge - Day 11. New logo, further changes to event details and a tiny tweak.
  13. Code Challenge - Day 12. Final frontend stretch.

Always liked this image when you first start with Rails. Loads to learn and do now. I'm excited.


So... `rails new SimpleSchedule.App.Rails`. Here we go!

Code Challenge - Day 12. Final frontend stretch.

Didn’t think I would be here on day 12 with a near complete frontend built out… I have never done anything like it. 40 commits in the repo so far (I don’t commit too much for frontend… although I ought to).

The main area of focus today was finishing off the Attendee detail view for both attendees and for the event detail view.

I’m having conflicting thoughts on how to best handle this, but I’m sure I will gain a better insight once I have something working with real data.

At this stage, the frontend is at around 95% done… perhaps 90%. I am prepared for, and am expecting, changes to occur between now and launch. Nothing is ever really done anyway. It will evolve and I’m actually looking forward to get requests and tweaks in.

I didn’t touch on specific time booking slots yet, but will get to this in a few weeks hopefully. It’s something I want to launch with, but let’s see how that goes.

Event Booking Details

Not sure on this one and not 100% convinced it is as clear as it can be. I wanted a simple overview for the attendee and the booking, which displays the name, email and event date for the individual. On top, there is an email link there… might be useful to email someone.

This page is actually a form element and should be editable, just to avoid many different screens and logic. Hitting the “Edit details” button will reveal a nice area for you to save changes. Check it out, quite happy about the way that works (for the next 24 hours).

And then the “edit” part:

It’ll actually focus on the first input too, so you can get right to it.

Link for this page: https://frontend.dev.simpleschedule.net/app/events/details/attendee/

Add an attendee to an event

I also wanted the ability to add an attendee, new or existing, to an event. This is what I came up with:

The idea here is to search for anyone already on your list via an AJAX (or similar) call as you type. I was thinking of presenting a search box and give you the option to search… but I think combining it to just the first box would work quite well. I didn’t make that work on the frontend! Plan is to try and find someone on the list and then offer to pre-fill the data, or just create a new attendee. Simples… (ha!)

Link: https://frontend.dev.simpleschedule.net/app/events/details/add/

My Attendee Detail

Taking a similar style as above I basically replicated the detail screen and also added a list view of the events they are or have been part of.

The “Amend” will take you straight back to the events section where you can make the edit. Don’t want to overcomplicate it. I’ll have to think about a way to return to the correct section once saved though.

Link: https://frontend.dev.simpleschedule.net/app/attendees/details/

The road ahead

With my first milestone out the way, it’s my plan to get the actual app coded. I am having a “Vincent” moment with deciding on the code base yet again. This always happens to me. I really want to nail a full Ruby on Rails app… but again, I also want to nail a ASP.NET Core app.

I’m edging closer to Rails… because it is something I wanted to do since last year… I’ve done my fair share of ASP.NET apps in the past.

I want to learn and have fun, so I’ll take that into account.

Anyway, the plan is to probably have the weekend to experiment with… something… then make a decision by Sunday night and get on with it. That will leave me 17 days to get close to a beta. That would also bring the project to ~29 days for end of Jan. I tend to count the days I’m working on it, so I hope I am still on track for most part of it.

There are many many many tweaks I still like to do on the frontend, like lists display and other little things that bug me. Oh... forgot to mention there is now a footer too. Another thing to note is that I'm yet to work on the 'public' view of the events, where people can sign up. It's sketched out in my head.

So… Ruby on Rails or ASP.NET Core? HAHA! (My friend Chris takes the flack of these dilemmas! Sorry Chris...)


I wrote this article mainly for myself to follow along when I look back at it at some stage. If you like to contribute, please email me or let me know via Micro.blog. There is also the Simple Schedule holding site where you can sign up for a beta.

For other posts on the challenge, check out the links below:

  1. Code challenge - from zero to web app in 60 days.
  2. Code challenge - Prelude and Day 1 - Setting things up.
  3. Code challenge - Day 2.
  4. Code challenge - Day 3. Holding page.
  5. Code Challenge - Day 4. A login page and a few tweaks.
  6. Code Challenge - Day 5. Registration page and preliminary app navigation.
  7. Code Challenge - Day 6. Getting in the groove, new events, MVP considerations.
  8. Code Challenge - Day 7. 'My Events' view.
  9. Code Challenge - Day 8. Burning the midnight oil, loud music and good progress.
  10. Code Challenge - Day 9. Progress, changes and regrets.
  11. Code Challenge - Day 10. There are no events, pricing thoughts and badges.
  12. Code Challenge - Day 11. New logo, further changes to event details and a tiny tweak.