-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Welcome to the Solid Memo wiki!
Our mission is to create a digital tool that accelerates learning while protecting user privacy, integrity, and security. We aim to empower individuals to learn at their own pace without compromising their personal data or online safety. This tool will contribute to the decentralization of the web, ensuring users retain ownership of their data and experiences in a secure, open, and inclusive digital environment.
-
Personal integrity:
Ensure that all user interactions and data management adhere to the highest ethical standards, empowering users to control and manage their digital presence with confidence. -
Privacy Preservation:
Develop and implement robust privacy features, ensuring that users' data is protected from unauthorized access, sharing, and exploitation. -
Transparency:
Maintain complete transparency in product planning, development, operations, and business practices to foster trust and confidence among users. -
Decentralize the web:
Support the decentralization of the World Wide Web, reducing reliance on centralized entities and giving users more control over their digital environments. -
Open Source Software:
Make the software open-source, allowing users and developers to freely access, modify, and contribute, thereby promoting innovation and collaboration within the community. -
Accessibility:
Prioritize inclusive design to ensure the product is accessible to users of all abilities and technical skill levels, supporting diverse needs and ensuring equal access. -
High-Quality and Reliable Software:
Deliver a stable, secure, and reliable product with regular updates and continuous improvements to meet the evolving needs of users. -
Sustainable Product Growth:
Establish a sustainable business model that supports the long-term growth and evolution of the product while remaining true to the core values of privacy, integrity, and openness. -
Ease of Use:
Create an intuitive user interface that simplifies the experience, ensuring that even non-technical users can easily navigate and benefit from the software.
These goals will guide each phase of product development, ensuring that the product aligns with user values, serves a diverse and inclusive audience, and contributes to building a healthier, more decentralized digital future.
Term | Description |
---|---|
User | A person who ultimately uses or benefits from the product, typically after it has been developed and made available for consumption |
Contributor | A person who voluntarily adds code, documentation, or other improvements to an open-source project |
Maintainer | A person who manages, updates, and oversees the development of an open-source software project, ensuring its continued growth and proper functioning |
Owner | A Product Owner of an open-source software project responsible for defining the project’s vision, prioritizing features, engaging with the community, and ensuring the software meets the needs of users and contributors |
Actor | An individual or entity interacting with the system (e.g., User, Contributor, Maintainer, Owner) |
Requirements | Specifications that serve as the foundation for development. They can be categorized into user stories, functional requirements, and technical requirements |
User Story | Descriptions of user needs and expectations in a simple, non-technical format. These help prioritize features that deliver value to the user |
Functional Requirement | Specifies the behaviors and capabilities that the software must exhibit to meet user needs |
Technical Requirement | Defines the underlying systems, architectures, and technologies necessary to support the software’s functionality |
Spaced Repetition | A learning technique where items that are frequently forgotten are reviewed more often, while those that are well-remembered appear less frequently |
Decentralized Web | A concept where control is distributed among many entities rather than being centralized in a single authority, enhancing privacy and user control |
Open Source Software | Software that is made available with a license that allows anyone to view, modify, and distribute the source code |
Accessibility | Ensuring the product is usable by people with diverse abilities, ensuring equal access for all |
Privacy Preservation | Developing features to protect user data from unauthorized access, sharing, or exploitation |
Transparency | Maintaining openness in product development, operations, and business practices to build trust with users |
Personal Integrity | Ensuring user interactions and data management adhere to high ethical standards, enabling users to control their digital presence |
Sustainability | Creating a sustainable model for the product’s growth, ensuring it evolves while maintaining core values of privacy, integrity, and openness |
Ease of Use | Designing the product with a simple, intuitive user interface to ensure it is accessible and usable by non-technical users |
Data Ownership | The concept that users retain control over their personal data and decide how and when it is shared or used |
Progress Tracking | A feature that allows users to monitor their learning and achievements over time |
Offline Access | The ability for users to continue using the product and studying even when they are not connected to the internet |
Adaptive Learning | An approach that customizes the content and difficulty level based on the user's learning speed |
Flashcards | A tool for learning where information is presented on cards, typically with a question on one side and the answer on the other, used for self-testing and memorization |
Decks | Collections of related flashcards grouped together, allowing users to organize their study material based on topics or themes |
Mini-Games | Small, interactive games integrated into the app to make learning more engaging and enjoyable |
Rewards System | A feature that offers users incentives such as badges, points, or milestones to encourage and motivate continued engagement and achievement |
Community Engagement | Encouraging users to interact, share their progress, and learn together in a supportive environment, whether through social media or an internal app community |
Continuous Integration (CI) | A development practice where code changes are automatically tested and integrated into the project’s codebase to ensure compatibility and functionality |
Continuous Deployment (CD) | A practice of automatically deploying changes to the product after passing tests, enabling quicker updates and iteration |
Unit Testing | The process of testing individual components or functions of a software to ensure they work as expected in isolation |
Changelog | A record of all significant changes made to the project, which provides transparency and helps users and contributors track updates, bug fixes, and improvements |
Onboarding | A process that introduces new users to the key features of the app, helping them get started and understand how to use the product effectively |
Version Control | A system that tracks changes to the codebase or data, allowing developers to collaborate and keep a history of updates and changes made to the project |
Code of Conduct | A set of rules outlining the acceptable behaviors and standards for contributors and community members to ensure a respectful and productive environment |
Governance Model | A system that defines how decisions are made within the project, clarifying who has authority and how contributors can influence the direction of the project |
API | Application Programming Interface, a set of protocols that allow one software application to interact with another |
UI/UX Design | The process of designing the user interface (UI) and user experience (UX) to ensure the product is visually appealing and intuitive |
Technical Debt | The concept of accumulated work that needs to be done to improve or refactor the codebase in order to maintain the software’s quality and avoid future complications |
Requirements serve as the foundation upon which the entire development process is built. They can be broadly categorized into user stories, functional requirements, and technical requirements. User stories describe the end user's needs and expectations in a simple, non-technical format, helping to prioritize features that deliver value. Functional requirements outline the specific behaviors and capabilities that the software must exhibit to meet user expectations, while technical requirements define the underlying systems, architectures, and technologies necessary to support the software’s functionality. Together, these requirements guide developers, designers, and stakeholders throughout the development lifecycle, ensuring that the final product meets both user needs and technical specifications.
User stories drive functional requirements by capturing the high-level goals and needs of the user, which then guide the development of detailed system specifications.
Functional requirements are driven by user stories as they outline the user's needs and goals, which guide how the system should behave. The functional requirements translate these high-level expectations into precise specifications, detailing the system's actions and processes to meet those needs.
Identifier | Description | Linked Requirement(s) | Milestone |
---|---|---|---|
FR1 | The app must support user-generated flashcards with text on the front and back | US3, US21 | 1.0.0 |
FR2 | The app must allow the user to create, edit, or delete flashcards | US21 | 1.0.0 |
FR3 | The app must include a study interface for users to review flashcards in a selected deck. | US3, US11, US16 | 1.0.0 |
FR4 | The app must offer pre-made flashcard decks based on popular topics or skills | ||
FR5 | The app must use spaced repetition to schedule flashcard reviews for optimal memorization | US11, US4 | 1.0.0 |
FR6 | The app must track review accuracy, number of sessions, and retention rates for each deck | ||
FR7 | The app must allow users to set daily or weekly study targets and track progress toward these goals | ||
FR8 | The app must provide a clear and easy-to-understand navigation system with a minimal number of steps to reach key features | ||
FR9 | The app must ensure a consistent layout across all screens, with familiar elements (like buttons, icons, and menus) placed in standard locations | ||
FR10 | The app must automatically adjust its interface for different screen sizes, ensuring usability on both mobile and tablet devices | ||
FR11 | The app must include an optional onboarding guide that introduces key features and navigation to new users | ||
FR12 | The app must highlight important actions (e.g., create, edit, save) with prominent and clearly labeled buttons | ||
FR13 | The app must provide visual feedback (e.g., animations, color changes) when a user interacts with UI elements (like buttons, sliders, or inputs) | ||
FR14 | The app must use simple, recognizable icons and clear labels for navigation and actions to reduce confusion | ||
FR15 | The app must include a search bar and shortcuts for users to quickly locate flashcards, decks, and other features | US20 | 1.0.0 |
FR16 | The app must allow users to adjust interface themes for visual comfort and accessibility | ||
FR17 | The app must minimize the chance of user error, and when errors do occur, it must display clear, helpful error messages | ||
FR18 | Users must be able to share their study progress (e.g., completion percentages, mastered topics) via social media or within the app’s community | ||
FR19 | Users must have the option to create public profiles that showcase their progress, achievements, and overall learning journey | ||
FR20 | The project must have automatic unit testing | 1.0.0 | |
FR21 | The project must have automatic integration testing | 1.0.0 | |
FR22 | The project must include a Continuous Integration (CI) pipeline | 1.0.0 | |
FR23 | The project must support Continuous Deployment (CD) | 1.0.0 | |
FR24 | The project must run automatic security audits on dependencies | 1.0.0 | |
FR25 | The project must block pull requests with critical vulnerabilities | 1.0.0 | |
FR26 | The project must include a regular job to update dependencies | 1.0.0 | |
FR27 | The app must allow users to gracefully migrate their user generated data | 1.0.0 | |
FR28 | The app must allow users to group flashcards into named decks | 1.0.0 |
Technical requirements specify the technical aspects and constraints needed to build and support a system. They include details like hardware, software, performance standards, security protocols, and integration with other systems, ensuring that the solution is feasible, scalable, and compatible with existing infrastructure. These requirements focus on the "how" from a technical standpoint to ensure proper implementation and operation.
Identifier | Description | Linked Requirement(s) | Milestone |
---|---|---|---|
TR1 | User authentication | 1.0.0 | |
TR2 | Personal data storage | FR1, FR2, | 1.0.0 |
TR3 | Versioned data models | FR1, FR2 | 1.0.0 |
TR4 | Spaced repetition algorithm | FR5 | 1.0.0 |
TR5 | User interface for deck study | FR3 | 1.0.0 |
TR6 | User interface for browsing flashcards | FR15 | 1.0.0 |
TR7 | User interface for browsing decks | FR2 | 1.0.0 |
TR8 | User interface for editing flashcards | FR28 | 1.0.0 |
TR9 | User interface for editing decks | FR2 | 1.0.0 |
TR10 | CI pipeline job for unit tests | FR20 | 1.0.0 |
TR11 | CI pipeline job for integration tests | FR21 | 1.0.0 |
TR12 | CD pipeline job for release deployment | FR23 | 1.0.0 |
TR13 | Automatic dependency upgrades | FR26 | 1.0.0 |
TR14 | Automatic vulnerability scanning | FR24, FR25 | 1.0.0 |
TR15 | Automatic migration of data models | FR27 | 1.0.0 |
TR16 | Automatic release tagging (semantic versioning) | FR23 | 1.0.0 |
The architecture of our software is designed to be modular, scalable, and easy to extend. At its core, the application follows a layered architecture pattern, with clear separations between different components such as the user interface, business logic, and data access layers. This separation ensures that each component can be developed, tested, and maintained independently, which not only improves code quality but also allows for easier customization and integration with other systems. The system is built using well-established design principles and patterns to ensure long-term maintainability and adaptability as the project grows.
To be determined...