Inspiration The creation of Tusome was driven by the desire to streamline the often messy process of self-guided learning. We recognized that learners frequently struggle not with the content itself, but with organization, accountability, and long-term retention. Inspired by cognitive science principles, Tusome aims to be a dedicated, distraction-free environment that empowers the user to take control of their knowledge acquisition. It embodies the philosophy that successful learning is less about consuming vast amounts of information and more about efficient planning and timely review. What I Learned Building Tusome as a purely frontend application was an intensive learning experience, particularly in cross-platform development with Flutter:Effective State Management: I gained mastery in implementing Riverpod, understanding how to create robust, testable, and maintainable application architecture by cleanly separating UI from business logic using providers and managing complex asynchronous data flows.Local Data Persistence: Since the app is pure Flutter, I learned how to effectively handle data storage, session management, and content organization locally (e.g., using Hive or shared preferences for lightweight persistent data), simulating the role a backend database would normally play. Deployment Challenges: Successfully deploying a Flutter application to GitHub Pages (as demonstrated by the live link) required a deep understanding of web building configurations, specifically using the --base-href parameter to ensure correct asset loading on sub-paths.How I Built the ProjectTusome is architected entirely using the Flutter framework with the Dart language, ensuring a fast, consistent, and beautiful experience across mobile and web platforms.Core Architecture:The application leverages Riverpod for declarative state management. This allowed for precise control over the application's core functions, such as managing the list of learning topics, tracking user progress, and handling the application's theme and settings.Feature Implementation (Concept):Since the current version is pure Flutter without complex SRS logic, the architecture focuses on foundational learning tools:Topic Organization: Content is structured into simple, categorized topics managed by Riverpod providers, allowing users to define their own learning scope.Simple Planning: Users can log their study sessions manually, and the application visualizes this progress using lightweight chart widgets available in Flutter's ecosystem.The goal was to prove the feasibility of the concept and create a highly responsive, appealing user interface that is ready to integrate more complex logic later.Challenges FacedThe "Backend Gap": The main challenge was designing the app to feel functional and structured without a powerful backend. I had to create robust, simulated data structures in Dart to demonstrate how a full-featured SRS system (with interval calculations like $I_n = I_{n-1} \times E_{n-1}$) would interact with the UI, even if the calculations themselves were not fully implemented yet.Web Performance Optimization: Ensuring the Flutter web build was small and performed smoothly on the browser, especially after integrating multiple custom widgets and dependency injection via Riverpod, required constant monitoring of asset size and tree shaking.Router & Navigation: Implementing complex, named routing within Flutter, particularly given Riverpod's integration, required careful planning to maintain a fluid navigation experience typical of a production-quality application.
Log in or sign up for Devpost to join the conversation.