Ask HN: What are some good back end website ideas?

12 points by maceurt ↗ HN
I have to program a final project for my ap computer science class and I have programmed some websites before, front and backend, but I don't really have any ideas.

I have looked around online, but most often the suggestion is something boring like a twitter clone, instagram clone, etc.

Preferably it would be something that is more backend intensive, because that is what I will be graded on, but I am open to any suggestions. Thank you!

11 comments

[ 3.3 ms ] story [ 45.7 ms ] thread
I think this might be a great time when you can take something simple and overengineer it!

When I was a little younger than your age, I made a whole "virtual currency" that could be moved around by typing numbers into text boxes, just to get some experience using PHP and MySQL. It didn't ever do anything useful, but it was a fun exercise, and more importantly: the fact that I was pursuing one of _my own ideas_ made me more interested in working hard on it.

So my advice would be to pick something simple you like, and then apply all the principles you've learned to it, even if it doesn't always make the most sense. This is just a learning project, so my guess is that some regular rules don't apply!

How about real time collaborative tool? Like a simple text editor that multiple can edit at once. You could easily expand this if happened to solve it with time left over
How about a game like chess or checkers or go that you play against an AI?
I programmed a chess game for my final for last semester lol. I might just program an AI for it, and submit that as my final, because my teacher said we can add on to our last final and do that for our next final. Do you know any books on chess AI or AI in general that are good?
These might be too difficult but just for fun here are some ideas for mostly backend.

Personal Music Tracker - You can get new music ideas by scraping content from a community radio station playlist like KCMP (https://www.thecurrent.org/playlist). Run it against a personal database of songs you already know and have the system send you a daily/weekly/monthly list of songs you haven't heard. It's fun to build.

Phone Proxy - Set up a disposable number for yourself on Twilio that will proxy incoming calls against a whitelist of approved numbers. You could do Twilio Studio to build an IVR that prompts the caller to press one to route the call. If they stay on the line you could do fun stuff like transfer to an It's Lenny server or something. It's not difficult to program and will teach you about some phone technology.

IoT Blog Reader - Follow blogs that you like and have them read to you via common IoT devices like Alexa/Google Home. Like an RSS reader but built for speech. Use an RSS reader to pull articles, run transcriptions of the articles with trained ML TTS models, and store the data with SQL. De-dupe the transcriptions based on URL. Use pre configured ML models for text to speech like AWS Polly or GCP Wavenet. Probably way too hard...

TextToSpeech for books - Upload a book. Get emailed the audio transcription. Use pre trained ML models for TTS conversion. Maybe use a SASS company like mailgun for the email part so you can just focus on extracting text from different file formats? Could start with plain text files initially.

Story Point Estimation - Use ML (or basic statistics) to estimate how long JIRA tasks or projects will take to complete. Use a general corpus of data to train an ML model, then feed it a team's data so it can adapt accordingly. There are some whitepapers on it like https://arxiv.org/pdf/1609.00489.pdf but you could look around for easier statistics algorithms to use instead so it's easier to build.

A Web UI where you can click a button that says "Launch VM" given CPU/RAM/Disk requirements, after a few minutes it returns to you SSH credentials.

Don't use cloud services. Literally, spin up a VirtualBox VM from where the web server is also hosted. Bonus points if you can spin up a VM from another web server.

(comment deleted)
Can I do this on Heroku?
You could try making something like BuiltWith https://builtwith.com/ycombinator.com. They have a fairly simple front-end(nothing happening in real-time) and you could offer stats about the top 10K Alexa websites, which makes a project look better than having some dummy data, I think.

I also remember about a side project that involves by crawling HN and displaying the most mentioned books in the comments. I think the author was making a bit of money by having a link to Amazon for each book(and using an affiliate code). You could do something similar but for popular Wikipedia articles for example. Or you could use Reddit as a source and instead of searching for popular books to search for sneakers or music.

Of course, I don't know if these ideas are too simple or too complicated, interesting or not for you and the person who will give you a grade.

Yes, this could be cool does not seem too simple or too hard.

On a related note a lot of different comments seem to be mentioning scraping some sort of data from a website on a continual basis. Would I just create a script that is attached to an extra worker that would send its data to the actual database that would in turn be read by the web server? Or would I want to just have the web server itself get the data and write to the database?

A couple of years ago I wrote a feed reader which would check every hour for new items in a few hundreds feeds. This script was running on a $5/mo server(initially it ran of an old laptop I had for easier debugging) and it would post the the new data to the database located on the website server. So I was using two machines, one for the crawler and one for the website, and two databases too I think. The one for the feed crawler was very simple with only the list of urls and the latest item url, so I don't show it again. That was the theory, at least, feeds are a bit more complicated in real life.

That's what I did, but I might have had different requirements. If you don't have a lot to crawl and you don't have to do it very often(once a week or less), you can probably space out the requests enough so that the server doesn't feel it. It helps a lot if you use some caching as well for the website itself in this case. I think it depends a lot on the requirements of the project. But using two machines is safer I think, although it might complicate things a bit.

Keep in mind that there's probably better technical advice out there than mine. I'm a hobbyist developer.