Welcome to FonteNotes! - the ultimate tool to streamline your planning process and increase productivity. Discover an immersive, feature-rich planning experience with an intuitive, easy-to-use interface.
With Week View, visualize your week in an easy-to-understand, organized way. This feature represents your week as a horizontal spread just like a bullet journal. It allows you to assign names to your weeks, making your planning more personalized.
Stay on top of your schedules and to-do lists with our Event and Task Creation feature. Create events with a specific name, description, day of the week, start time, and duration. Create tasks with a name, description, day of the week, and mark them as complete when done.
Never lose your progress with our Persistence feature. With a simple click, save your data in a Week to a .bujo file using JSON encoding. When opening the program, choose a .bujo file to load and view your pre-saved contents.
Never overcommit again with our Commitment Warnings. Set maximum numbers of events and tasks for each day. If you exceed these limits, the planner will alert you.
Personalize your planning with our Themes feature. Choose from a collection of pre-defined themes that change the background color or image, font color, font family. We have a special surprise in one of our themes that we will leave the user to find!
Enhance your navigation experience with our Menu Bar & Shortcuts. We provide a conventional menu bar for easy access and navigation within the application.
Get detailed views of your tasks and events with our Mini Viewer feature. Open any single event or task in a new window, displaying all its details, including its day of the week.
Decide to change your plans? Our Takesie-backsies feature allows you to easily delete tasks and events, keeping your Week View clutter-free.
Track your daily progress with our Progress Bar feature. Visualize the number of tasks completed vs. planned for each day. It also includes a numeric count of tasks remaining for each day.
Make your planning more resourceful with our Links feature. It parses any valid HTTP/HTTPS link in a description, making it clickable right from the program's Event/Task detail views.
Stay flexible with your plans with our Mind Changes feature. Edit any aspect of any existing Event or Task from the Week view, keeping your plans adaptable and up-to-date.
With FonteNotes, planning your week has never been this exciting and personalized. Make the most out of your week with our ultimate planning tool!!!
-
Single Responsibility Principle
Each class has a well-defined responsibility. TheIWeekinterface andWeekclass, for instance, are responsible for managing weekly activities, while theTaskclass focuses on handling task-specific data and operations. TheJournalControlleris responsible for orchestrating the application logic, and theJournalGuiViewis tasked with visual representation. None of these classes does more than what they're designed for, thereby upholding the SRP. -
Open-Closed Principle Modules can be extended without requiring modifications to existing code. For instance, the interface
IWeekensures that any new week-like class can be created without requiring changes to existing classes, provided it adheres to the defined contract. Similarly, theJournalGuiViewclasses can be extended to support new views without modifying the underlying Controller logic. -
Liskov Substitution Principle Derived classes can be substituted for their base classes without altering the correctness of the program. The
Taskclass extends theActivityclass, but wherever anActivityis required, aTaskcan be used, ensuring the LSP is maintained. -
Interface Segregation Principle
IWeekis a lean interface adhering to "I". Clients likeJournalControllerImplthat interact with instances ofIWeekare not forced to depend on methods they do not use. This principle could be enhanced further by splitting theIWeekinterface into multiple smaller interfaces based on the client's usage. -
Dependency Inversion Principle The high-level
Driverclass does not depend on low-level classes likeWeekorTaskdirectly. Instead, it interacts with them via theJournalControllerandJournalGuiViewabstractions, which are injected as dependencies. Thus, the higher-level modules depend on abstractions, not on lower-level module details.
To enhance the program's feature set, Auto #tags, a new TagParser class can be introduced. This class would take on the responsibility of parsing tags from Task or Event title strings.
'Sort by Name & Duration' feature, TaskComparator and EventComparator classes, would be introduced which handle the sorting of Task and Event objects, respectively. Existing classes like Task, Event, and Week can now accommodate new features like automatic tagging without altering current behavior.
Implementing a common Comparator<T> interface. Would guarantee the safe substitution of specific comparators without affecting the program's functionality.
Tagging and sorting functionalities would separated from the IWeek interface, delegating these responsibilities to new interfaces: ITaggable and ISortable. As a result, the Week class implements these new interfaces, and classes that don't need sorting or tagging avoid unnecessary dependencies.
GUI class dependencies are on the ISortable interface for sorting functionality and the ITagParser interface for parsing tags, rather than on concrete classes. This would reduces tight coupling between higher-level classes like JournalGuiView and the details of tag parsing and sorting.
