The Parent Portal project: Part One

First, some backstory: For this summer, I tried to get a certain Triplebyte Externship, but it fell through, and I was left with either working for my dad’s masonry restoration and fireplace business, or to find my own job.

It started with my dad deciding to sell his scaffolding, and lots of it, because of his decision to move wholly into the fireplace business. With over 60 frames, over 100 plank, a whole set of tube and clamp, there was plenty to sell – and my dad agreed to give me a commission on the stuff I managed to sell.

With some cash in pocket (and frankly, it is amazing how many people are on Craigslist), I contacted Homeschool Connections to see if they had any work for me. I’ve done multiple freelance projects for them in the past, most of them not on this blog yet, and was curious to see what they wanted.

They did have work for me, and it was pretty simple: A Parent Portal. A place where parents could sign in and easily check their student’s grades by pulling data from the Moodle LMS… and that’s it. I made them a deal for 1 week of work, flat-rate, to build this portal.

A week later…

They were amazed. It had everything they wanted and more: Parents could sign in with just their email address, no passwords to remember. They could link unlimited students and click one button to see their scores in every course.

It was so good, that I managed to convince them to extend the contract. Four weeks, for a full-blown Course Registration system to replace GoSignMeUp. Automatic enrollment of purchased courses, a simplified UI, better search… a whole wishlist.

To put it simply, I worked on it for those four weeks, and then renewed it for another week and a half to add a few more features that weren’t part of the four week agreement.

It’s Monday of the last week, and here’s a taste of what I’ve got so far.

For technology, I’m using… surprise… PHP 7 with the Laravel 7 framework. The UI is built with Laravel Blade, except for the components which are made using Laravel Livewire. Livewire gives all of the UI components AJAX-style reloading, so the UI feels almost as fast as a React or Node application despite using a purely PHP backend.

I have to give credit where it is do: Livewire is astounding. I can do insanely simple stuff like this:

<a href="#" wire:click="myPHPFunction()">{{ $name }}</a>

And on the server:

public function myPHPFunction() {
    $this->name = "Something else";
}

And just like that, the name of my link will change on a click. If you are building a Laravel application, Livewire is by far the fastest way to get the user experience of AJAX without writing a single line of JS. Super cool.

I will delve into much more of the technical details in Part Two, coming soon.

Published by Gabriel Sieben

Gabriel Sieben is a 21-year-old software developer from St. Paul, MN, who enjoys experimenting with computers and loves to share his various technology-related projects. He owns and runs this blog, and is a traditional Catholic. In his free time (when not messing with computers), he enjoys hiking, fishing, and board games.

Leave a comment

Your email address will not be published. Required fields are marked *