🞫
*Error*
🞫
*Msg here*
🞫
*Msg here*

My Poems

You currently have no poems saved. You can either send in and save a poem or you can add one below.

Add one here:

Add Poem
Search Through My Poems

Your poems:

Sorry no poems found.

Motivation


We weren’t the ones to come up with the idea for this project, all that credit goes out to Mr. Ketcham, the Young Adult Services Coordinator at the West Bloomfield Library. He wanted to create an interface that allowed people from the community to write a poem and share it directly with the library, where anyone could receive a copy of it. With a Raspberry Pi and thermal printer in hand, he walked down to Coding Club, where we were excited to hear and start building his wonderful idea.

Brainstorming Process


Our initial thought process was to create an API where someone could send in their poem, have it received by a Raspberry Pi (a mini computer), and then have it printed on a thermal printer. Although this sounded simple at first, building this system proved to be quite challenging. The first issue that came to mind was: how could we put poems onto the Raspberry Pi? Getting poems was simple — we could use Google Forms. But the challenge was how could we transfer the poems from Google Forms to the Raspberry Pi? Initially, we thought about manually inserting the poems, but we wanted to find a more efficient solution. So we brainstormed another idea: what if instead of using Google Forms, we built our own collection interface through a website? This way we wouldn't need to worry about manually inserting the poems onto the Pi and could automate the process. And that's exactly what we did.

Plan layout
Blueprint of an API we were cooking up while brainstorming.

Building Version One of the Website


We designed our website to operate like this: When you submit a poem, our server automatically enters it into a MySQL database. When a library visitor taps a button to print a poem, the Raspberry Pi sends an HTTP request to our server to retrieve a poem from the database. Our server responds with a poem, which the Raspberry Pi forwards directly to the thermal printer. Finally, the visitor receives a freshly printed receipt with a poem.

Our website was built off of a design template made by one of Coding Club members. We integrated it seamlessly with our build and we think it turned out pretty well!

Author Information Screen
#1) First page you see upon opening the website. Here you can enter your name and email and continue to the next step.
Write Your Poem
#2) Page you see after enter your name and email. Here you can start writing your poem!
Sent Screen
#3) Screen after submitting your poem. You recieve an ID to track your poem for later!

Struggles


Moderation/Security

A group of trolls/internet gangsters caught wind of the project. They spammed our site with less-than-appropriate poems and with no security measures this presented a very critical threat. Could anyone just submit anything they want? Obviously, we couldn’t allow this so we developed a moderation system. Each poem that’s submitted needs to be reviewed by a moderator before it can ever touch the printer.

Approval Page
The approval site we made to address the inappropriate poem problem.

Mechanical/Hardware Issues With the Printer Itself

After finishing the website and API, we began toying around with the printer, trying different fonts and font sizes, trying to print images, etc, but we could never get the ink to read clearly. Even after adjusting some settings through the Adafruit Printer API, we were never able to get a crisp image. After doing some research and watching a few videos, we found the culprit was the power adapter. We upgraded it and it fixed the issue.

Presentation Day


After weeks of programming, bug fixing, and careful tweaking, we finally finished the project and were ready to present it to the library staff! Soon later Mr. Ketcham and Ms. Tobin made a visit to the Coding Club, and we unveiled our weeks of hard work and they loved it! It was working wonderfully and they were ecstatic to see the idea come to fruition!

A few days later, we visited the library to meet their IT department so we could move the project from our servers to theirs. The process went smoothly. We downloaded our code base from GitHub to their server, set up the MySQL database through their phpMyAdmin database, and everything was seemingly working without any issues.

Roadblock


A year passed by. And nothing. The project was nowhere to be found and it seemed like the project was dead in its tracks. Lost to sit dormant forever until forgotten completely. We could not let that be the case forever.

What happened?

Shortly after getting our project online, the library website began to get some renovations. During the update process, our project unfortunately got corrupted as well as some potential security issues raised.

Poem Collector 2.0 Arrives


We realized we had built an incomplete project. Full of buttons with no destination, labels with missing features, and security vulnerabilities. The terms of service button led nowhere, you were given an ID to track your poems for status updates but no such system existed, and passwords were stored in plain text — one of which even leaked on our GitHub portal! We definitely weren’t professionals. Some things were definitely done sloppy. But we were going to do this right.

New Features / Changes

The project got a massive upgrade:

  • Styling - instead of a blank textbox for the poem submission page, we thought it would be more creative if it instead mimicked the style of a receipt itself. This way you can see how your poem will actually look after its printed.
  • Saving functionality - before after you sent your poem in, you'd never see it again. Now you’re not only able to see it again but keep yourself posted on all its status updates!
  • Commenting functionality - we thought it would be cool if people could leave positive comments for authors. You can leave a comment by scanning the QR code at the bottom of any poem!
  • Improved Printer - the old printer was literally just a mess of electronics all garbled together. Now the printer is much more compact and streamlined!
  • Improved Security - All deprecated functions were removed, passwords are now encrypted, captcha was integrated to protect against spam, and much more!
  • Improved Moderation Portal - the old portal for reviewing poems was less than preferable. The UI interface was a little bit ugly and definitely didn’t allow any room for mistakes — accidentally approve a poem that shouldn’t be approved and there is no way to get that poem removed. With the new interface, that shouldn’t be a problem at all thanks to its search and menu bar to make navigating the database significantly easier!
  • Improved User Moderation Account Control - before only one account can act as a moderator and review poems. Now anyone can be a moderator. Moderators can even sign up other moderators.

These are just the main ones and hopefully the future lies for much more! We’re glad to announce as well that our project is open source which means anyone can contribute to the project or download it for themselves by accessing our GitHub!

Printer
Photo of the thermal printer.

Credits


A big thanks to everyone who helped with this project!!

Stephen Ketcham
Stephen Ketcham: Came up with the idea, supplied coding club the resources to make the project, and provided Coding Club such an amazing project to work on!
James Shaw
James Shaw: Hosted Coding Club in his room Tuesdays after school allowing each of us to be able to work on this project. Handled a lot of the communication and let us work on the project sometimes during class!
Caeden Kidd
Caeden Kidd: Led the development for the project. Wrote the poem collector API for both the server side backend and the printer. Designed the style and functionality for the front-end including most of the CSS and Javascript. Inspired version two of the project.
Nate Pongtankul
Nate Pongtankul: Made important revisions to code to improve readability and improve efficiency. His edits are public on the GitHub repository.
Max Gorman
Max Gorman: Wrote code and designed a digital print button for the first printer.
Ryan Sparago
Ryan Sparago: Contributed to the frontend design and team morale.
Ari Micznik
Ari Micznik: Working on new features currently in progress and designed the contact page.
Eesh Garg
Eesh Garg: Recruited team members and supported project coordination.

Poem System FAQs


How Does the Poem ID System Work?

Each poem is assigned a unique ID to distinguish it from others. After submission, you receive this ID. You can either save it to your profile under My Poems for easy retrieval or write it down.

What Should I Do If I Lost My Poem ID?

If you lose your Poem ID and did not save it, contact a moderator through the contact page. Provide your name and the poem's title, and they may assist in retrieving it.

Comment System

  • Who Can Leave Comments? Only moderators and library readers can leave comments. This feature aims to connect both writers and readers.
  • Replying to Comments: Direct replies are not possible. Comments can only be addressed if the commenter provided their contact information which isn't always the case.
  • Handling Insulting Comments: Report any negative or hateful comments to us through our contact page. We investigate and may ban users engaging in such behavior.

Poem Approval and Rejection

  • Approval Time: Approval depends on moderator availability.
  • If Rejected: Rejection may be due to inappropriate content or other issues. Contact a moderator through the contact page to discuss possible re-evaluation.

Reporting Inappropriate Content

If you encounter an inappropriate poem, report it through the contact page for review.

Status Updates

Currently, we do not offer notifications. Check the My Poems section on our website for updates on your submissions.

Website Issues

If the website isn't working, please visit the contact page for assistance.

Getting Involved

  • Spread the Word: Encourage others to submit poems.
  • Contribute to Development: Help improve features via our GitHub repository. We welcome contributions and suggestions.

Setting Up for Your Library

If you're interested in setting up a similar system at your library, contact the Coding Club at West Bloomfield High School via the contact page to discuss potential arrangements. Or visit our GitHub page where we provide a step by step tutorial on how to set up and configure this very site.

Contact

Welcome to our contact page. Please describe the nature of your issue / request and we'll get back to you through email.
Name *
Email *
Subject *
Issue / Request *

Welcome to the West Bloomfield Library Poem Approver Portal!

You need to be registered in order to access this page.

Username *
Password *

Poem Database Portal

Reported Issues Portal

Below you can see the issues / requests people have submitted via Contact Moderators.

Manage Moderator Portal

Below you can see the all the moderators registered on this website, add a new moderator, and regulate existing accounts.

Print Queue

Below is a list of the poems that will print in order before the printer selects randomly from the database.