Home > ExtJS, General, Google APIs, GTFS > An App To Manage Bus/Rail Routes in GTFS Format — that no one wanted

An App To Manage Bus/Rail Routes in GTFS Format — that no one wanted

TL;DR version: I wrote a proof of concept GTFS data manager. I suck at sales or something. Small/medium transit companies don’t care about GTFS? The link to the app is at the bottom of this post.

The full version:

So before I actually started learning ExtJS (and the whole reason I started in the first place), I had this grand idea that there was a market for software that managed GTFS data for small and medium sized public transit organizations. The thought was that these transit companies didn’t use the incredibly powerful — and incredibly expensive — route scheduling apps. To go along with that, their IT departments are probably really small and underfunded.

For example, my local transit agency is using formmail.pl to submit feedback and their website has that wonderful tag that defines low tech:

<meta name=”GENERATOR” content=”Microsoft FrontPage 6.0″>

And the link to their formmail form is also 9 grades of pure awesome:

It's 1994 all over again!

Anyway, I threw together a little ExtJS application as a proof of concept and started reading and learning how ExtJS actually works (because my code for the proof of concept was horrible). I then started reaching out to some small transit companies around the country targeting the ones that actually had halfway decent maps of their routes and stops. By the way, Amarillo, TX has the most detail online including pretty much everything you would need to create the GTFS data feed.

I figured for a relatively small monthly fee somewhere around $50 to $75 a month or so, we could give them an application that lets them manage their routes, trips, stops, and publish a GTFS feed for them with their data. Or perhaps you could charge based on the size of the transit company… like $x for y number of routes. Anyway, it’s actually not an incredibly difficult program to write. At $50 bucks a month you’d never be a millionaire, but it would be some nice extra side income if you could get a bunch of these small agencies signed up.

I figured a good way to get started would be to offer it for free to whichever company I could find to accept it first. Amarillo was an obvious first target. Summit County, Colorado had quite a bit of data as well. My local transit agency was missing GPS locations of their stops, but it wouldn’t be too hard to collect that. Probably $100 bucks in gas or so driving around collecting GPS coordinates. There were a good number that had pretty much all of the data online already, they just needed the format. That would have been perfect, because I could format the data for them semi-manually while I was writing the app at the same time. This would give me a perfect test case and they’d get free service.

After a number of email inquiries and some phone calls, I got absolutely nowhere. One must really suck at sales when you can’t even give away a product to someone. Either that, or there is simply no interest. I didn’t get a single return phone call or email from anyone, and I was offering it for FREE. Not even a nibble. Nada. Nothing. Either these companies don’t understand the benefit of pushing their GTFS data to Google or they just don’t care. (Judy Phelps @ City of Amarillo, I’m still waiting to hear from you!)

So the next question was how could you provide the service for free to transit company and somehow monetize the content. Well, these types of questions are certainly not my forte either, but we kicked around a few ideas and ultimately decided that there’s really just no good way to do it and make any halfway decent amount of money. I don’t think you could even cover the costs of the hosting. You could write your own web portal type thing to host their agency website for them, which isn’t a bad idea… but again, the cost would ultimately fall on the transit agency and that was a black hole for my attempts at contacts.

So, after lots of reading and learning ExtJS, figuring out the GTFS format, the Google Maps API, learning JavaScript again (I hadn’t touched it since Netscape 4.x or so.. it’s a bit different now), and crunching some numbers to make the costs work, I’ve decided to give up… for now.

The proof of concept app works OK as a GTFS data browser (it’s buggy), but I never implemented any modification methods. I did make a shape editor to generate GTFS shapes, but you can’t actually save it. The data that you would need to generate the shape in GTFS format is stored in memory though. The data currently in there was imported from a good number of public GTFS feeds. There’s about 15 or so feeds included I think. Anyway, you can mess around with it here:


I figure I’ll probably end up finishing it (read: rewrite from scratch) at some point anyway, because it was fun to work on and it’ll help me learn ExtJS. Then I’ll just open source the code. Don’t hold your breath. Without any monetary incentive, this is low priority.

If you have any comments or questions about it, don’t hesitate to leave a comment below.

ExtJS, General, Google APIs, GTFS ,

  1. Qlex
    July 23rd, 2009 at 18:45 | #1

    when i read your post, I was laughing. The reason for that, is that I went the same path as you did – wanted to offer transit operators a tool which would help them structurise their timetables (for passengers).
    Moreover, Im offering a transit trip planner for some agencies around Poznan.
    I eventually got stuck with following question asked by a staff member of one agency:
    - if you give me a tool to update timetables, i will have to make changes here and then separately i will have to make changes in another software tool which helps me create driver rosters.

    This said, I was wondering if you got any more work done on that? I would be eager to know how was your ytransit tool written and is it easy to use it to create/edit/delete/manipulate with routes/stops/trips and then export it to our mysql ?
    if yes, maybe i could find a good way to monetarise this locally here in Poland and at least confirm that there’s some (small but there) market for such tools ?


  2. July 23rd, 2009 at 18:59 | #2

    Yes, our original thought was just to get the info to create the GTFS data. After that, you could expand into further modules to update rosters, track vehicles, publish schedules, etc. You can easily do something like a roster. But without someone on the inside to work with, it’s hard to know exactly what’s needed. You’d be coding in the blind as far as requirements go. If we could have gotten at least SOMETHING of a response from one of the companies, it would have been inspiring, but without that, like I said, there isn’t much in the way of incentive.

    As for the MySQL piece, I wrote an import script that took existing GTFS public data and threw it into MySQL. Using AJAX, you could modify data directly in the database from the UI’s javascript. From the server side, it’s just JSON requests to feed data to the UI.

  3. Karel
    March 3rd, 2010 at 16:11 | #3

    This is really cool. And it is a pity nothing came out of it. Have you dropped the development altogether as you were considering? Will you open the source then?

    Such tool would be particularly useful if it would include an importer from non-gtfs format data (csv?). Most local travel agencies maintain their data in unpolished formats that could be completed (polished) in your system, thus avoiding the necessity to re-type transportation data one by one from scratch. Otherwise thumbs up, it is very nicely done!

  4. Karel
    March 3rd, 2010 at 16:12 | #4

    “Have you dropped the development altogether as you were considering?”

    Sorry, I meant … or will you revisit and finish it, as you were considering…

  5. Qlex
    June 22nd, 2010 at 20:11 | #5

    Hi eric.
    following up on Karel’s post and my previous communication with you, have you came to a decision on what to do with ytransit code?
    It would be a shame to drop this project. Since myself and Karel (if this is the Karel) are testing out several engines that consume GTFS, it would be cool to fiddle around with a ytansit-like tool, that would allow to import the gtfs, allow user to make changes to it and export back to gtfs or at least to mysql.

    let us know if it would be possible to trial this out in any way.


  6. Karel
    August 9th, 2010 at 17:40 | #6

    Hi Erick,

    Any chance that you would share the code of your application? It is a very good looking piece of application and it is a real pity if it just dies out without being put in use.


  7. Ari
    August 10th, 2010 at 08:19 | #7

    Hi! Eric, I am from Brazil! Please, send me an email, I want to talk with you about this program! Thanks!

  8. Karel
    August 12th, 2010 at 04:11 | #8

    So it does seem that you should change the title of this blogpost ;)

  9. Snap
    August 23rd, 2010 at 08:33 | #9

    I’m a small Australian Bus operator, and have spent the past few days preparing a GTFS feed.

    I’m sure with a bit more development this could be really handy tool for smaller bus operators.

    To make your project more appealing to operators,if we could generate timetables and route map and descriptions, which are a requirment for all Private Bus opertors in NSW, it would be a perfect.

    If you could develop this further by making it easy to delpoy route maps, timetables and other information to an existing website, I would buy your product in a heart beat.

    Besides ourselves, there are thousands of private operators throughout Australia, contracted to their State Governments to provide transit services.They range in size from single vehicle operators to Large multi-national companies.

    A possible approach in Australia would be to approach each State Industry association. For example: Our Industry association is BusNSW.

  10. Snap
    August 23rd, 2010 at 08:36 | #10

    I probably should of run spell ‘chaecker’ over my last post.


    Thanks for the interesting read.

  11. Jayakumar K
    December 21st, 2010 at 08:31 | #11

    This looks great, Waiting for the day you open source :-)

  12. Ophir
    January 1st, 2011 at 04:59 | #12

    Hi Eric,

    I sincerely think you should change the headline for this post to be “…that no one wanted at the time”. I think it is downright cool!

    Please drop me an email – I have a small company specializing in intermodal/multimodal trip planning and am interested in speaking with you about what you have developed so far and if you’re thinking of getting back on the horse.

    P.S. And thanks to Jayakumar above me for posting the link to your project on another website. I followed it here and am glad I did!


  13. Karel
    June 30th, 2011 at 15:11 | #13

    So it should be now called “An application that everybody wanted except for its developer” ;)

  14. July 8th, 2011 at 10:46 | #14

    The comments here might make you think that, but I’ve contacted every person that expressed interest in the comments above and none of them have returned any emails. It’s pretty much par for the course for this application though.

  15. qlex
    August 18th, 2012 at 14:29 | #15

    @eric this ytransit tool popędu up in transit talk on osm mailing list.was it you publishing it there?
    Any news happening on your decisions?
    @Snap i own a small it company and we have developed a tool to import/create gtfs feed, once this is done ,one can edit the feed and print timetables and export to new feed.
    Its being used by a local small agencje in my area. Tool still requires some work on frontend.
    Contact me at info@goeuropa.eu If you are still interested.

  1. No trackbacks yet.