Inspiration

Our main idea was that people often make commitments and agreements with their friends, but usually they fall apart because nobody wants to be the judge. There is a lack of ways to motivate each other in actually sticking to some goal.

What it does

In our app, everybody that joins the challenge pays a deposit (through PayPal), then later the commitment pool of everybody that did not complete it is divided between the successful people. We use Gemini API as an arbiter - you have to send a picture proving you completed the challenge with the proof code visible. If the AI cannot objectively verify whether a challenge was completed, e.g., challenges involving some time duration - the submission is posted onto the voting page, where other participants can vote.

How we built it

The whole backend is built in Python using FastAPI and Jinja2. The frontend uses HTMX and CSS. Our users can log in to our app by logging in with PayPal. We handle PayPal orders, batch payouts, and webhooks - to ensure that there will be no errors with handling the money of our users. For database and storage, we use Supabase, where we set up a PostgreSQL database with atomic RPC. For the cloud deployment of our service, we use Render - thanks to the free credits given by this sponsor, we could move our app to the paid version of hosting. In the early production, we used Postman to test logging in with PayPal, orders, and capturing orders.

Challenges we ran into

At the start, we had a challenging time figuring out what stack we could use, as our team was not that experienced with this kind of project. Additionally, we had some problems making our app work for different timezones - but after some work, we managed to make it universal.

Accomplishments that we're proud of

We are extremely proud of the fact our app is working, correctly processing payments and payouts. Our AI arbiter works much better than expected - it cannot be fooled by internet stock photos or by putting in some old photo from your gallery. We are also very happy that our app works so well on mobile.

What we learned

We learned that even if something seems too big, too distant from us - teamwork can make it happen. These weeks of working on this project proved that we are capable of making our idea into a working product. We also now have an extensive knowledge of PayPal developer tools and FastAPI.

What's next for KeepIt

Up next, we could think about synchronizing challenges with some external apps - for example, step trackers, sport tracking apps - so our users could just link the arbiter to their latest run without the need to take a pic. We could also think about some charity events, for example, the prize pool of people that do not complete a challenge goes to a selected charity - we believe this would be an excellent idea to grow.

Built With

Share this project:

Updates

Submission history