Skip to the content.

Project Feature Blog

Project Feature blog write up, using CPT/FRQ language

Notes Manager: A Dynamic Note-Taking Web Application

Program Design, Function, and Purpose

Purpose of the Computing Innovation (CRD-2.A) - Big Idea: Creative Development | Topic: Program Function and Purpose

The Notes Manager application is a computing innovation designed to help users efficiently create, store, edit, and organize their notes. This program enables users to maintain a digital collection of notes with searchable functionality, reducing the need for physical note-taking and improving accessibility.

How the Program Functions (CRD-2.B) - Big Idea: Creative Development | Topic: Program Function and Purpose

The application is structured with both frontend and backend components. The frontend is built using HTML, CSS, and JavaScript, providing an interactive interface where users can input and manage notes. The backend, implemented with Python using Flask, handles data storage and retrieval through a database managed by SQLAlchemy.

Inputs and Outputs (CRD-2.C, CRD-2.D) - Big Idea: Creative Development | Topic: Program Inputs and Outputs

  • Inputs: Users provide note data via a web form, including the title, content, and subject.
  • Outputs: The program displays stored notes dynamically, allowing users to edit, delete, and search their notes.

Development Process (CRD-2.E) - Big Idea: Creative Development | Topic: Program Development

The program follows an iterative development process:

  1. Planning: Identify core features and define database schema.
  2. Implementation: Develop frontend forms and backend API endpoints.
  3. Testing: Debugging input handling, database operations, and UI interactions.
  4. Deployment: Host the application on a cloud platform for user access.

User Interface Design (CRD-2.F) - Big Idea: Creative Development | Topic: Program Development

The UI features:

  • A form for adding new notes.
  • A search bar for filtering stored notes.
  • A dynamically populated display section for viewing, editing, and deleting notes.
  • Styled components using a gradient color scheme for readability and aesthetics.

Code Documentation (CRD-2.G) - Big Idea: Creative Development | Topic: Program Development

Each function in the backend is documented with comments describing its purpose, parameters, and expected behavior. API endpoints are structured to handle CRUD (Create, Read, Update, Delete) operations on note data.

Algorithm Development - Big Idea: Algorithms and Programming | Topic: Algorithm Development

Explanation of Program Logic (CRD-2.B)

The program uses JavaScript to handle UI interactions and send asynchronous API requests to the Flask backend. The backend processes requests and updates the database accordingly.

Relational and Logical Operators (AAP-2.E.b, AAP-2.F.b)

Relational operators (==, !=) are used for input validation and data filtering. Logical operators (and, or) ensure form fields are properly filled before database insertion.

Conditional and Iterative Statements (AAP-2.H.b, AAP-2.J, AAP-2.K.b)

  • Conditional statements verify if a note exists before updating or deleting it.
  • Iteration is used to traverse and display all stored notes in the UI.

Algorithm Comparison (AAP-2.L)

Various algorithms were considered for search functionality:

  1. Linear search: Loops through all notes (current implementation).
  2. Database indexing: More efficient but requires advanced setup.

The linear search was chosen for simplicity and compatibility.

Algorithm Creation and Modification (AAP-2.M.a, AAP-2.M.b)

The main functions—adding, retrieving, updating, and deleting notes—were created from scratch and modified iteratively to improve performance.

Errors and Testing - Big Idea: Creative Development | Topic: Testing and Debugging

Error Identification and Correction (CRD-2.I.a, CRD-2.I.b)

Errors encountered included:

  • Undefined data fields: Fixed by checking for missing inputs before insertion.
  • Incorrect API routes: Resolved by debugging endpoint URLs.

Input-Output Testing (CRD-2.J)

Test cases included:

  1. Adding a new note and verifying its presence in the database.
  2. Editing a note and checking if the changes persist.
  3. Deleting a note and confirming its removal.

Data and Procedural Abstraction

Data Abstraction (AAP-1.D.a, AAP-1.D.b) - Big Idea: Algorithms and Programming | Topic: Data Abstraction

Data is stored in a database using SQLAlchemy models. Each note is an object containing attributes for title, content, and subject. This abstraction simplifies data management.

List Traversals (AAP-2.O.a, AAP-2.O.b) - Big Idea: Algorithms and Programming | Topic: Data Abstraction

Stored notes are retrieved as a list and iterated through when displaying them in the UI.

Procedural Abstraction (AAP-3.B) - Big Idea: Algorithms and Programming | Topic: Procedural Abstraction

Functions such as fetchNotes(), addNote(), and deleteNote() encapsulate specific behaviors, reducing code redundancy and improving maintainability.

Conclusion

The Notes Manager application demonstrates key computing principles, including data abstraction, procedural design, algorithmic logic, and iterative development. By following the AP CSP guidelines, this project highlights the real-world application of computer science in enhancing productivity and organization.

Self Grade:

Self-Evaluation: Notes Manager Project

Evaluation Criteria Comments Grade (out of 1)
Program Purpose and Function Clearly defined purpose; effectively manages notes. 1.00
User Interface Design Clean, intuitive, and aesthetically pleasing. 1.00
Code Documentation and Readability Well-commented, but some functions could be clearer. 0.85
Algorithm Efficiency Uses simple and effective logic but lacks optimization. 0.80
Data Management and Abstraction Good use of SQLAlchemy, but improvements possible. 0.90
Error Handling and Debugging Covers common errors and now includes better validation. 0.90
Testing and Reliability Functional testing done, but no automated tests. 0.85
Security and Authentication JWT-based auth is implemented well. 0.95
Scalability and Maintainability Structured well, but search could be optimized. 0.85
Innovation and Creativity Practical implementation, but could add more features. 0.90
Average Score Improved in UI and error handling, making it stronger. 0.905