Rewritten Hackathon Submission - About the Project

Inspiration

I was buying something at a local store when the owner asked how my day was going. I mentioned I was going biking, and it turns out he's a biker too. He showed me a trail on the map – exactly opposite of where I usually go. That's when I discovered this vast forest right in the middle of London, Ontario.

Then he dropped the news: the whole area is going under development. 3,800 units. The council is agreeing to it. He was planning to start a petition because he goes there all the time and sees deer, foxes, turkeys, all kinds of birds. My heart broke when I heard it would be demolished.

I asked what I could do to help. I'm a developer, so I offered to build an online petition platform. He got so happy. That same day, I got an email that Bolt.new was free for the whole weekend. I had extra tokens beside my other project. Perfect timing.

What it does

The platform lets people sign a petition to save Cherry Hill's wildlife habitat. You enter your name and email, verify it through a link we send, and your signature gets counted.

We show real-time signature counts so people can see the community support growing. There's a CMS system where we can post updates about the campaign, share photos of the wildlife, and keep people informed about council meetings.

The site works on phones since people might sign while they're out in the community. Everything updates instantly – when someone signs, everyone sees the counter go up right away.

How we built it

I used my weekend Bolt.new access to build everything. Started with React and Vite for speed, added Supabase for the database and real-time features. Used Tailwind to make it look good quickly.

The email verification was important – we need legitimate signatures for the council. Built a whole admin system so the petition organizers can post updates without needing technical knowledge. Even added a block-based page builder so they can create new pages by dragging and dropping components.

Everything is open source. Other communities facing similar issues can use our code.

Challenges we ran into

The page builder was more complex than expected. Creating a drag-and-drop system with different block types (hero sections, forms, columns) while keeping it intuitive took multiple iterations. Making sure blocks saved correctly to Supabase's JSONB fields and rendered properly on the frontend was tricky.

Supabase Row Level Security policies gave us the most trouble. The database kept rejecting signatures with "policy violation" errors. We spent hours debugging why anonymous users couldn't sign the petition. Turns out the RLS policies were too restrictive – we had to explicitly allow anonymous inserts while still protecting other operations.

The signature trend chart also broke on mobile screens. Labels overflowed the container, making the whole dashboard unusable on phones. Had to implement horizontal scrolling and responsive label formatting.

Accomplishments that we're proud of

Built a complete petition platform in one weekend. It's not just functional – it looks professional and works smoothly. The real-time signature counter creates momentum. People see others signing and want to join.

The block-based page builder lets non-technical users create beautiful campaign pages. They can add hero sections, update feeds, and image galleries without touching code.

Most proud that it's already being used. The store owner shared it with his biking groups. We're getting real signatures from real people who care about Cherry Hill.

What we learned

Bolt.new works best when you use its preferred stack. We discovered that letting Bolt use its own starter kit with React, Vite, and Supabase made everything smoother. Fighting against its preferences wastes time.

Collaborating with another dev agent was game-changing. We used Claude to supervise Bolt – chatting through the plan first, reviewing all the generated files, and not just clicking buttons blindly. This two-agent approach caught issues early and kept the project on track.

Planning before coding saves hours. Instead of jumping straight into implementation, we had Bolt plan the architecture first. This prevented major refactoring later.

Context is everything. Bringing all the context to Bolt through careful prompting and file reviews made it generate much better code. The agent needs to understand the full picture.

What's next for Save Cherry Hill Wildlife Habitat

Short term:

  • Social sharing buttons to spread on Facebook
  • Wildlife photo gallery showing what we're protecting
  • Progress celebrations at signature milestones
  • Multiple language support for London's diverse community

Long term vision:

  • AI moderation for comments to keep discussions constructive
  • Blockchain-based signatures for permanent, verifiable records
  • Multi-tenant system so any community can start their own campaigns
  • Integration with city council systems to automatically submit signatures

I want people to discover, like I did, what treasures exist in their own backyard. This platform can help communities protect the nature around them before it's too late. Cherry Hill showed me that sometimes the best projects come from random conversations and perfect timing.

The combination of Bolt.new for rapid development and careful supervision through another AI agent proved to be incredibly powerful. We built something meaningful in 48 hours that's already making a difference.

Built With

Share this project:

Updates