Skip to content

Requirements_Specification

Batuhan Comert edited this page Mar 29, 2025 · 3 revisions

1. Functional Requirements

What the system should do.

1.1. User Management

  • 1.1.2. Users should be able to sign up, log in, and log out.
  • 1.1.2. Users should be able to update their profile information.
  • 1.1.3. Users should be able to delete their account.

1.2. Node Management

  • 1.2.1. Users should be able to create nodes by entering a name (e.g., "Chicago").
  • 1.2.2. When creating a node, the system should retrieve attributes from Wikidata.
  • 1.2.3. If no data is found in Wikidata, the user should manually enter attributes.
  • 1.2.4. If data is found in Wikidata, the user still should be able to manually enter attributes.
  • 1.2.5. Users should be able to edit node attributes.
  • 1.2.6. Users should be able to delete nodes.
  • 1.2.7. The name of nodes should be able to be seen on the node like "Chicago" written just above a node.

1.3. Connecting Nodes

  • 1.3.1. Users should be able to connect two existing nodes.
  • 1.3.2. While connecting nodes, users must define the relationship (e.g., "Emily was born in Chicago").
  • 1.3.3. Users should be able to edit the relationship between connected nodes.
  • 1.3.4. Users should be able to delete a connection between two nodes.

1.4. Discussion Page

  • 1.4.1. Users should be able to create posts in discussion pages.
  • 1.4.2. Users should be able to edit their posts and comments.
  • 1.4.3. Users should be able to delete their and anyone's posts.

1.5. Search & Navigation

  • 1.5.1. Users should be able to search discussion posts.

1.6. Data Integrity & Moderation

  • 1.6.1. There should be a single type of user that is "regular user" where each user is able to use all functionalities.

2. Non-Functional Requirements

System constraints and performance expectations.

2.1. Performance

  • 2.1.1. The system should handle at least 100 concurrent users smoothly.

2.2. Scalability

  • 2.2.1. The backend should support horizontal scaling using Docker & Kubernetes.

2.3. Security

  • 2.3.1. Rate-limiting should be enforced to prevent API abuse.

2.4. Reliability

  • 2.4.1. If Wikidata is unavailable, the system should gracefully handle failures and allow manual entry.
  • 2.4.2. The system should support database backups and restore functionality. (?)

2.5. Maintainability

  • 2.5.1. The system should be modular, allowing easy updates and feature additions.
  • 2.5.2. Logs should be maintained for monitoring errors and debugging.
  • 2.5.3. The frontend and backend should be containerized using Docker. (?)

2.6. Usability

  • 2.6.1. The UI should be minimal but functional for easy node creation and connection.
  • 2.6.2. Error messages should be clear and actionable.
  • 2.6.3. Users should be guided when creating nodes, relationship between nodes, post on discussion page.

images

References

Clone this wiki locally