Devember - Union member management tool

Howdy folks!

My Devember project is to make a union management tool to simplify keeping track of members, grievances, and member concerns.

Background / Rational:
I work for a multinational passenger rail manufacturer as a Methods Analyst. My job has me doing everything from designing physical tools, factory layout/flow, internal automation, creating repair or assembly instructions, creating internal CRUD apps, to planing and managing site IT infrastructure. Sort of an “okish of all trades master of none” thing.

My job is in a white-collar union and I am now part of the executive of the local union. I need something to help me manage our data in a central way what is simple to use and inexpensive.

There are other tools that can work well but they tend to be some combination of:

  • expensive (we are a VERY lean union)
  • complicated to use or setup
  • runs on AWS (Amazon does not support workers rights)

And for my personal development I want to:

  • Learn more about modern PHP (I am not strong in PHP)
  • Get better with using git
  • Get comfortable using Tailwind instead of always relying on bootstrap
  • Just generally have more web dev time under my belt.
  • Make a version that could function as a multi-tenet saas app (Stretch goal to learn even more!)
  • Learn the basics of PHP testing.

The plan:
PHP web app made with:

First Steps: (to be completed before Nov 27th)

  • Setup Dev server (With ZeroTier as an access tool)
  • Setup basic Laravel app with the above stack
  • Github setup without leaking any secrets
  • wekan board with all the basic features laid out

Thanks for Devember! I will try to be active and post updates as I progress!

4 Likes

Update 2020-11-23

IT’S ALIVE:

Next step:

  • Adjust the auth presets from the TALL stack to be better aligned to my use

  • Look into multitenancy. it might be better for me to do this at then start vs the end to reduce the amount of code i have to redo.
    I need to decide how to segment the tenants (separate DBs or just some sort of namespace thing? idk. Research is required.)

  • Update Tailwind to V2.0!
    So apparently Tailwind CSS just had a big upgrade so I might as well learn on the latest version. The preset I used for Laravel does not use 2.0 so I might as well upgrade that in place as an exercise.

Also, this is the first time I have ever used a CSS framework that makes update trailers!

2 Likes

Update 2020-11-29

  • Tailwind updated to V2.0! I cheated here and just followed the pull request by marcorieser on GitHub.

  • Setup a Linode VM as a mock production server.

  • Setup Longview on my Linode account for both the local dev and Linode production server.

  • Did some learning about multitenancy in Laravel. After some reading / videos on the subject I have decided on a single database for this project. There are pros and cons to each approach but for this project I think a single DB approach is fine.
    I have also decided not to use any of the existing multitenancy packages for Laravel as I currently (perhaps naively) think this will not be a huge speed bump.
    I did find a recent tutorial on multitenancy / local scopes on Laracasts so I may lean on that tutorial a lot.

Next Step

  • Start coding! Time for the rubber to hit the road! I do need to adjust the Auth defaults from the TALL stack but I will do that as I go.

Update 2020-12-07

Slow start to December so far but Devember is a good push to keep going.

Since the last update I have:

  • Created a global tenant scope for separating tenants without having to check the users tenant in every controller.
  • Created events tied into login/logout to set the user tenant ID in the PHP session.
  • Added said scope to the stubs used by “php artisan” when generating models/controllers.
  • Realized that I should refactor that into a base class for my models to inherit.
  • Started learning how to write unit tests on the tenant scope features.

Next Steps

  • Refactor the scope into a parent class for all the tenant models.
  • Build out enough models / model factories for basic use case.
  • Make some working unit tests for the Tenant scope.
  • Try to put in 1hour a day for the rest of the month!