Being forced in the front?
Tags: webdev, middleware, python, architecture
Published: 2023-02-22 03:27:20

## Prelude ✍️

Hey everyone,

this is not an article but im having a "problem" and so i thought i crowdsource the search for possible solutions and ideas.

In my daylie Job i work mostly in the Middleware & Backend. 
We host multitude different services/products and im responsible for 5 of them.

With especially one of them i've had a problem for quite some time though. Its not an inhouse developed service but we buy it and add our own tooling around it to make it a) fit into our landscape and b) give our customers more flexibility and functions. Its a classical 2 Tier Application Stack with a separate 4 Tier Web Stack (reduced functionality) and a separate Stack for API's. All connect to the same Database. Every customer needs his own Database Instance (🤮). Meaning we have > 400 Oracle Schemata's and User. As you can imagine it was an administrative nightmare. And of course proprietary as all hell. 

Here a quick excalidraw picture:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/08elpvknhdt14mu6o9dd.png)


So about a year ago i went and developed an internal Tool Stack. 

Some of which are Open Source Components like an Scheduler  for Script and Job executions (Apache Airflow is 😍 btw), API Layers and some of which i developed myself like the Data Model which holds the Meta Data for those 400+ DB's. And of course all the Jobs which collect and update the Data on those DB's (written in python). 

All in all im very happy what i build (yes, it should never be necessary but here we are).

My Colleagues are also very happy and use it on a daylie basis.


Here the Picture of the current solution:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xpfuwsbp4q0q24csd8rw.png)


## The Rub 🙈

When i developed this whole stack i, fully on purpose, neglected the frontend. 

Because im no Frontend Developer, plus the massive amount of work of developing and Designing an Application stack from ground up, on my free time, was big enough. 

So i decided on some readymade frontend to basically display the Meta Data from my DB and lets them edit some fields with dialogs and so on (think Notion). 

The rest is basically all Middleware logic which was good for me bc i could write those things out in python and make some headway in the list of things that needed to be done.

Now... with every product or service you brought to life there comes a time when you start to think about your next major release. And this one is no different. My Colleagues come to me with new feature requests which makes me very happy ofc bc it means they use it and think about situations where it can help them do their work. 

But it also means im at a point where the current Frontend solution is at its limit. Meaning the Frontend cant display the Workflows i want to provide.

## My current line of thinking 🤔

After i came to the realization that the tool i built has a future and i need a more sophisticated frontend i was quick to look at Django as my Framework of choice. But... with all the things it can do it doesn't provide me with the UI Components i need. 

Like Notification PopUps, Flyout Menus, Interactive List Filtering and so on.

All those i would get with Javascript/React but not with plain HTML/CSS.

Am i really forced to learn JavaScript (learned it 10+ years ago so would be basically starting fresh)? I've been very blessed with not needing to but i don't see any other chance. In order to implement all those features i basically need JS (and no PHP isn't an option :P).

Im currently looking into python Frameworks such as streamlit. Dont know if it's really the right way. Any experience would be much appreciated.

How about u all? Any idea? Have you stumbled upon similar situations, have i overlooked a way to make it happen?
As i said im no Frontend Dev and its very much possible there is something i have forgotten or never known about. 


I would love to hear from you all and your thoughts or ideas.





Thanks and so long ❤️

---

PS:
- My current line of thinking includes Tailwind for styling
- I work at a Datacenter, all of our Applications/Solutions have to be On-Premise and "Airgapable" so hosted solutions are sadly out of the question.