Inspiration

The inspiration for Sunday Reflections comes from Codie Sanchez's "1 in 60 rule," an aviation concept that highlights how even small deviations can lead to significant off-target results over distance. Sanchez applies this to life and business, emphasizing the importance of regular self-reflection to stay aligned with goals. She conducts periodic reviews, often on Sundays, using specific reflection questions to assess progress and make adjustments. The application is built around these 7 core reflection questions.

What it does

Sunday Reflections is a journaling web app that provides a structured environment for users to engage in weekly self-reflection. Each week, starting on Sunday, users are presented with 7 fixed reflection questions (pre-filled prompts) to answer. Key features include:

  • User Authentication via Supabase (email + password), ensuring users are logged in to access the main UI.
  • Weekly Reflection Journaling, with auto-saving, a limit of one reflection per user per week, and a lockout for edits once the user’s timezone-adjusted Monday 00:00 has passed.
  • Soft delete functionality for entries with an undo/restore option.
  • Viewing Past Reflections through a dashboard that lists weekly entries, allows full viewing, and supports sorting and filtering by date, showing gaps for unsubmitted weeks.
  • Reminders & Notifications, allowing users to opt in for Saturday email reminders ("Prepare to reflect tomorrow") and Sunday morning alerts with a direct link to a new reflection page.
  • Exporting capabilities for single reflections or all entries to PDF or Word format, with clean formatting and timestamps.
  • Sharing functionality to generate a private link to a single reflection or quote, with an optional ability to share to social media platforms like Twitter, Facebook, or LinkedIn.
  • Client-side AES encryption for all user reflections, requiring a passphrase set by the user on first use. The encryption key is derived from this passphrase and is not stored in Supabase, localStorage, or cookies, ensuring user data privacy even if the server is compromised. Encrypted text is stored in the database, and decryption occurs only on the client.
  • UI/UX features like a distraction-free writing mode, calming tones, minimalistic fonts, mobile-first design, light/dark toggle, and large, readable fonts.

How we built it

The Sunday Reflections application is built with a modern tech stack to ensure a calm, focused, and responsive experience.

  • Frontend: Developed using React (Next.js), styled with Tailwind CSS, and utilizing Heroicons for iconography.
  • Backend: Powered by Supabase, which handles User Authentication (email + password), PostgreSQL for database storage, and Storage for any necessary assets. Sensitive configuration is stored in a .env file.
  • Deployment: The application is designed to be Vercel or Netlify ready.
  • Client-Side Encryption: AES encryption is implemented using a secure JavaScript crypto library like crypto-js or SubtleCrypto to encrypt reflection answers in the browser before they are sent to Supabase. The encryption key is derived from a user-set passphrase using PBKDF2 or a similar algorithm and is only stored in memory, never persistently.

Challenges we ran into

We tried to complete everything with one prompt but we ran into errors. Bolt.new also kept deleting the .env.local file and this kept resurfacing errors. We explicitly told it to stop touching that file.

Accomplishments that we're proud of

The comprehensive set of features envisioned for Sunday Reflections represents significant achievements. Notably, the implementation of client-side AES encryption for all user reflections stands out as a critical feature for user privacy and security, allowing users to maintain ownership of their private data. We thought of this because we thought of how users would react to saving their reflections with us. The thoughtful UI/UX design focusing on a distraction-free and calming environment also contributes to a proud accomplishment.

What we learned

We challenged ourselves to learn typescript and this challenge served us well. We also leant how to use Bolt.new to make full stack web applications and integrate with Github as well as deploy them on Netlify.

What's next for Sunday Reflections

We are going to invite friends to test the platform and share their feedback. We will then iterate based on feedback and launch to the wider public. It will be free for now and even later. Our philosophy is to keep it free as much as possible and see how much value we can create before we try to capture any.

Built With

Share this project:

Updates