I'm building a new service that connects people using public transportation, the service consists of 3 parts, (mobile app, web app and the backend architecture)
The requirements for this project are just for the API/backend part.
My service plainly works like this,
Mobile users taking a bus, check in to that bus using their app, they'll be able to see other people that are checked in to the same bus, and be able to add them as a friend and message each other, the user will remain checked in to a bus for a predefined number of minutes until they're "kicked off" the bus, unless there's more activity from the app, then the user is kept on the bus.
So for the social part of the API , we should be able to:
+Check in to a bus (by a given bus number)
+Automatically check out user from bus after a predefined amount of time of inactivity
+See who else is checked in to that bus
+View user's profiles
+Add a user as friend
The other part of the API will be about bus position logging and retrieval, this is the data heavy part, basically while users are socialising, the app will collect speed and gps coordinates of the bus from all the users on it, and send it to that part of the system, my software will clean up that data and make sense of it, then this data will be used to serve live bus data to the rest of the users of this service.
The developer's responsibility is only to create the api endpoint that will receive the GPS coordinates, and bus data and store it in a database. using that data and cleaning it up is my responsibility and you shouldn't worry about that.
So here's the "data collection" part of the API:
+Receive bus data (speed, coords, direction, last seen, etc..)
+Get bus live data by asking for it's ID, (takes a bus number as an argument, and responds with the most recent live data we have)
+Find the most nearby busses, takes user's GPS coords, and fetches the database where the nearest busses are.
This is a simple description that i'm quickly writing off the top of my head, but it's mostly all of the features that are needed for the API side, there's no architecture set yet, but i'm going to work it out closely with the developer so we can create a system that is going to be modular and easily scalable.
if you have any questions please just let me know if i'm not clear enough.
I've chosen CakePHP as the framework as I'm pretty familiar with it, but i'm a very quick learner so if you have another framework in mind don't hesitate to let me know !