E-Blogging System Final srs1

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 17

Software Requirements

Specification
For
ONLINE BLOGGING SYSTEM

Prepared by

Team 9

HARSH RAJ
JAYSH TODI
AKASH DEEP
ARUNESH BHATT
MRIGAKSHI
ITABLE OF CONTENTS

1. Introduction 3
2. General Description 3
3. Functional Requirements 4
4. Interface Requirements 5
4.1 User Interfaces 5
4.2 Hardware Interfaces 5
4.3 Communications Interfaces 5
4.4 Software Interfaces 5
5. Performance Requirements 5
6. Other non-functional attributes 6
6.1 Security 6
6.2 Binary Compatibility 6
6.3 Reliability 6
6.4 Maintainability 6
6.5 Portability 6
6.6 Extensibility6
6.7 Reusability 6
6.8 Application Affinity/Compatibility 7
6.9 Resource Utilization 7
6.10 Serviceability 7
7. Operational Scenarios 7
8. Preliminary Use Case Models and Sequence Diagrams 8
8.1 Use Case Model 8
8.2 Sequence Diagrams 9
9. Updated Schedule 10
10. Updated Budget 10
11. Appendices 10
11.1 Definitions, Acronyms, Abbreviations 10
1. Introduction

The Online Blogging System is a web-based application designed to


allow users to create, manage, and share blogs on various topics. This
system provides a platform for writers, bloggers, and content creators to
publish their thoughts, ideas, and articles in a structured and organized
manner. The project leverages the MERN (MongoDB, Express.js,
React.js, Node.js) stack, offering a modern, efficient, and scalable
solution for managing a blogging platform.

Objectives:

 To provide a user-friendly interface where users can write, edit,


and publish blog posts.
User friendly interface would include (but not limited to):
a) Clear and coloured buttons to edit, read and delete blogs;
b) Simple and clear login/authentication page.

 To enable user engagement through comments, likes, and sharing


of posts.
 To ensure the security and privacy of user data through robust
authentication and authorization mechanisms.

Scope:

This project covers the development of a full-stack web application,


focusing on frontend user experience, backend logic, database
management, and API integration. It includes features like user
registration, post creation, commenting, and a search functionality.
2. General Description

The Online Blogging System aims to offer an intuitive platform for


users to express their thoughts and connect with an audience. The
system is designed with scalability and flexibility in mind, allowing for
future expansions and enhancements.

Features:

 User Authentication: Secure login and registration system.

 Blog Management: CRUD (Create, Read, Update, Delete)


operations for blog posts. Blog Input type will be String with valid
character count in the range (1-40000) and JPEG/JPG/PNG Image
(1*1 TO 1024*1024) (Optional).

 Comment System: Users can comment on posts, facilitating


discussions. Comment Input type will be String with valid
character count in the range (1-2000).

 Search Functionality: Allows users to search for blogs by


keywords or categories (sports, politics, etc).

 Responsive Design: Accessible across various devices including


desktops, tablets, and smartphones. Aiming to make a dynamic
website that adapts to the display size and orientation.
3. Functional Requirements

User Authentication and Authorization:

 Login/Signup: Users must be able to register and log in using their


credentials. Credentials would include Username and a Password.
 Password: Password would be encrypted using bcrypt.
 Role Management: Different roles such as admin, editor, and
reader should be supported.
1. Admin: Admin (the one with ultimate access to the mongo
database in his system, or the project developer) would
manually control whose data/blog-set would be deleted if
any moderation rules are violated. Admin would strictly
compose of developers with access to the database.
Moderation rules:
 Use of inappropriate words/phrases in the
blog.
 Abuse towards an individual or community.
 Using confidential/copyrighted content.

2. Editor: Editor would be users itself. Moreover, anyone with


the user’s credentials and take the role of an editor and
change/edit the blogs.

3. Reader/Viewer: Anyone who has the access to the website


can be a reader, that is, read the blogs of any editor. Readers
will not be able to post/edit/delete blogs or comments.

Blog Post Management:

 Create Post: Users can create and publish new blog posts.
 Edit/Delete Post: Users can edit or delete their own posts.
 View Posts: All users can view published posts.

Comment System:

 Add Comment: Registered users can comment on blog posts.


 Manage Comments: Users can edit/delete their own comments;
admins can manage all comments.

Search and Filtering:

 Search Blogs: Users can search for blogs using keywords. It


would use a simple linear search algorithm.
 Sort by Date: Users can sort blogs by publication date.

User Profile Management:

 View Profile: Users can view and edit their profile information.
Profile Information would include:
o Username
o Posts
o Comments
o Dashboard (Dashboard will be a common and
shared analytics of the website, same for every
user.)

4. Interface Requirements

4.1 User Interfaces


 Responsive Design: The user interface should be responsive,
adjusting seamlessly across devices.
 User-Friendly Navigation: Intuitive navigation through menus,
search bars, and category filters.
 Rich Text Editor: A feature-rich editor for creating and
formatting blog posts.

4.2 Hardware Interfaces


 Server Hardware: The application should be hosted on a server
with sufficient CPU, memory, and storage resources (4GB free
disk space or cloud space for a database of 1000 people).
 Ram: A ram above 4GB would enable seamless working.
 Client Devices: The system should support standard user devices
such as PCs, tablets, and smartphones.

4.3 Communications Interfaces


 API Communication: The frontend (React.js) communicates with
the backend (Node.js) through RESTful APIs.
 Database Connectivity: Secure connection to the MongoDB
database using Mongoose ORM. MongoDB ATLAS connection
via stable internet.

4.4 Software Interfaces


 Operating System: The server should run on a Windows-based
OS > Win7 (e.g., Windows 11).
 Web Browser Support: The application should be compatible
with modern browsers (Chrome, Firefox, Edge, Brave).
 Development Tools: The project uses tools such as Node.js,
React.js, Express.js, MongoDB, and Git for version control.
5. Performance Requirements

 Response Time: The application should respond to user actions


within few seconds.

 Scalability: The system should be able to handle increasing traffic


and data load efficiently.

 Database Performance: MongoDB queries should be optimized


to ensure fast data retrieval.

 Concurrency: The system should support multiple users


interacting simultaneously without degradation in performance.

6. Other Non-Functional Attributes


6.1 Security

 Data Encryption: Sensitive data should be encrypted both in


transit and at rest. The passwords of users would be encrypted
using bcrypt module. The password would be hidden even from
admins and developers.
 Authentication: Use of JWT (JSON Web Tokens) for secure user
authentication.
 Authorization: Role-based access control to restrict certain
actions to specific users. Roles would include:
Admin>Editors>Readers. These were elaborated in above pages.

6.2 Binary Compatibility

 Cross-Platform Support: The application should be compatible


across different operating system versions and devices.

6.3 Reliability

 System Uptime: The application should aim for a 99.9% uptime.


 Error Handling: Proper error messages and logging mechanisms
should be in place. Errors should also be visible in the console of
the user’s web browser.

6.4 Maintainability

 Code Modularity: The codebase should be modular and well-


documented for easy maintenance.
 Version Control: Use Git for tracking changes and managing
updates.

6.5 Portability

 Deployment Flexibility: The system should be deployable on


various cloud platforms like AWS, Heroku, or DigitalOcean.

6.6 Extensibility
 Plugin Support: The system should be designed to support future
plugins or extensions without significant refactoring.

6.7 Reusability

 Component Reusability: Frontend components should be


reusable across different parts of the application.
 API Reusability: APIs should be designed for use in different
parts of the application or even external systems.
6.8 Application Affinity/Compatibility

 Third-Party Integrations: The system should support


integrations with third-party services like Google Analytics, social
media APIs, etc.

6.9 Resource Utilization

 Efficient Use of Resources: The system should be optimized to


use server resources (CPU, memory) efficiently.
 Database Optimization: MongoDB collections and indexes
should be designed to minimize resource usage.

6.10 Serviceability

 Monitoring and Alerts: Implement monitoring tools to track


system performance and send alerts in case of issues.
 Backup and Recovery: Regular backups should be scheduled, and
recovery procedures should be documented.

7. Operational Scenarios
Example Scenarios:

 User Registration: A new user registers on the platform, and the


system redirects to login page.

 Creating a Post: A registered user logs in, creates a blog post, and
publishes it.

 Commenting on a Post: Another user comments on the published


post, and all the viewer can see it.

 Admin Management: An admin (user with owner’s access to the


database) logs in, reviews reported comments, and takes
appropriate action.
8. Preliminary Use Case Models and Sequence Diagrams

8.1 Use Case Model

 Actors: Admin, User/Editor, Reader


 Use Cases: User Registration, Signup/Login, Create Post, Edit
Post, Delete Post, Search Blog, View Profile, Delete Profile, Edit
Profile, Database access.
8.2 Sequence Diagrams & Class Diagram

Sequence Diagram

+
Class Diagram

 User Registration: Diagram showing the interaction between the


user, frontend, backend, and database during registration.
 BLOG: Diagram illustrating the sequence of actions when a user
creates a new blog post.
 Comment: Diagram showing how comments are added and
managed within the system.
9. Updated Schedule

Project Milestones:

 Phase 1: Requirements gathering and planning.


 Phase 2: Initial design and prototyping.
 Phase 3: Implementation of core functionalities (user
management, post management).
 Phase 4: Integration of additional features (comments, search).
 Phase 5: Testing, bug fixing, and deployment.

Timeline:

 Start Date: 14.08.2024


 Estimated Completion: 08.11.2024
10. Updated Budget

Cost Breakdown:

 Hosting Costs: Expenses related to cloud hosting services.


 Tools and Software: Costs for any third-party tools or software
licenses.
 Miscellaneous: Additional costs such as domain registration, SSL
certificates, etc.
11. Appendices

11.1 Definitions, Acronyms, Abbreviations

 MERN: MongoDB, Express.js, React.js, Node.js


 CRUD: Create, Read, Update, Delete
 JWT: JSON Web Token
 API: Application Programming Interface
 ORM: Object-Relational Mapping

You might also like