This article refers to an older version of derkonzert.de, check out this article instead, to learn about the current version.
“Scheiße, die spielen heute?”
..translates to: “Damn it, that band’s concert is today?”. This happens way too often.
In munich, there are alot of concerts. But the problem is, there often are only few, that are truely interesting, or satisfy my music taste.
All big platforms that list concerts a) are limited in genres, or b) show everything, including hundrets of events which you arent interested in.
So you are forced to check out multiple websites (or magazines) to find the needles in the haystack.
So I had the idea to create a list of needles, of only those events that I would go to.
At the same time, I played around with Reactjs and decided to make it my react test-project. It may not be the perfect playground, since there hardly are any user interactions or state changes, but who cares.
Finding a name wasn’t easy, and I have to give credits to my boss Bernd, who actually came up with derkonzert!
The project is separated into three parts:
- the backend, where all data is stored and administrated and where notifications get triggered
- the app, which is the website the visitors see
- the notifications (this isn’t a real part, but it must be noted here): e.g. the awesome yo app
This is a light, silverstripe php framework instance, that spits out JSON formatted concerts and an rss feed (mainly used for mailchimp).
One thing I learned here, the existing RESTFul modules all somehow didn’t match my needs, whether it was inconsistent formatting, or their weird CRUD implementations (which is not using silverstripes
PermissionProvider..). So I wrote one tiny controller to accomplish all I needed. In no time, Silverstripe FTY. That said, it’s not a true RESTful service.
I also learned about Silverstripes
CliController class which basically is just a usual
Controller, but only can be called via the cli. Perfect for my cron jobs that e.g. trigger the YO API.
This part of derkonzert is an isomorphic ReactJs app, which means, the same code that runs on the server, runs in the client (the browser).
The only difference between the servers and the client’s code is, that on the server I start a simple express node.js server and on the client, I only start the React Router, which, by the way, is a pretty neat routing solution.
There are a couple of benefits, building a webapp this way:
- the user actually gets markup within the first request and doesnt have to wait for the scripts to come in
- the search engine bot, well, also gets something to read
- the developer doesnt have to switch between different programming languages or templating styles
Of course, I could have accomplish this with other tools, but I really liked it, to have all my module functionality and markup at the same place. There was no “Okay, now, which template was it again?” at all.
Well, all there is to say about YO: it’s super simple. Do your POST, thats it. There is a daily cronjob, that triggers YO’s API, if new and featured concerts has been published.
Now that derkonzert is up and running for some time, I am super happy about all the incoming concert submissions! Sometimes one would’nt match my taste, but I’ll publish it anyways, it just won’t show up in the ‘featured’ list.
One thing that some people asked me: Do I see, who actually submitted a concert? No, I cannot see who submitted something.
If you have any kind of feedback, leave me a note, I am happy about any kind of response!