SpotMe-Mondayvile / spotme

0 stars 0 forks source link

Create Non Functional Requirements #3

Closed chihabam closed 7 months ago

chihabam commented 8 months ago
  1. See Resource Requirements
  2. React libraries
  3. SQL Database Credentials
  4. API connectivity ("webhooks")
SOULROSEGOLD commented 7 months ago

State Management:

Redux: Manages the global state of your application. Useful for handling complex state logic and sharing state across components. Routing:

React Router: Enables navigation and routing in a React application. Allows you to define different routes and manage navigation between them. UI Components:

Mantine, Ant Design.

Form Handling: **We may not need this. I think it would depend on how much info we gather from the user to cross reference against other data. also typically free so it wouldn’t hurt just in case we need it,. Formik: A library for building forms in React. It simplifies the process of managing form state, validation, and submission.

React Hook Form HTTP Requests:

Axios: A promise-based HTTP client for the browser and Node.js. It simplifies making asynchronous HTTP requests and handling responses. Data Visualization:

D3.js: ***Do we need data visualizatrion? or would that be something we use to better understand what’s taking place as a developer? For sandbox, but not production?

Authentication:

Firebase Authentication: If you're using Firebase as a backend, Firebase Authentication provides ready-to-use authentication features for your React app.

Auth0: A popular authentication and authorization platform. It offers a React SDK for integrating authentication seamlessly into your application.

Animation:

React Spring: A spring-physics-based animation library for React. It allows you to create smooth and interactive animations.

Framer Motion: A motion library for React that makes it easy to add animations to your components. It's suitable for both simple and complex animations.

Direct link to actual Google Doc: https://docs.google.com/document/d/1hNpTH9Gm_HN7KNd44mop0RosHWmhKZr2lfIGWoIp-0w/edit?usp=sharing

SOULROSEGOLD commented 7 months ago

API TEMPLATE* ROUGH

API Template

—----- template for creating APIs—--------------------- API Connectivity Requirements:

  1. External API/Webhook 1: Endpoint URL: [Specify the URL for the API or webhook]

Authentication Mechanism:

[Specify the authentication method, e.g., API key, OAuth token] Headers (if any):

[List any required headers and their values] Data Format - Request:

[Describe the expected format for data when making requests] Data Format - Response:

[Describe the expected format for data in the responses] Error Handling:

[Outline how errors will be handled, including status codes and error messages] Retry Mechanism:

[Specify any mechanisms in place for retrying failed API calls, e.g., exponential backoff]

  1. External API/Webhook 2: Endpoint URL: [Specify the URL for the second API or webhook]

Authentication Mechanism:

[Specify the authentication method for this API] Headers (if any):

[List any required headers and their values] Data Format - Request:

[Describe the expected format for data when making requests] Data Format - Response:

[Describe the expected format for data in the responses] Error Handling:

[Outline how errors will be handled, including status codes and error messages] Retry Mechanism:

[Specify any mechanisms in place for retrying failed API calls, e.g., exponential backoff]

API Template Direct link: https://docs.google.com/document/d/1gLtIERdi_V2XsebKHbz_CuluTXQNFHhtgZlk5CRuH6o/edit?usp=sharing

SOULROSEGOLD commented 7 months ago

NOTES:

fujcntional reqs whats gonna be necessary from source code,

if we are going to have users, we need profiles, such as they need to be stores in java, and this is what we need, need to design our objects and tuples so that when we do go to call those tuples, we need unique id’s

Functional features- in order for the program itself to work

non functional reqs

— if we’re going to be running a py server, then we need to make sur ethat we have something with enough ram, memory, costs, for a server,

maybe could use a raspberry pi, need a database, sonting to run it on stomething to deploy it

exceptions non funct like user auth, but we need credentials, and key mngmnt services,

-++++++++++++++++++++++ stories are like issues, tickets/ for tracking, etc

—---

if we wanna use aws, how much storage, how much ram, if we wanna use a linux machine

NON FUNCTIONAL REQS - “The devil is in the details.”

figure out what questions you need to ask Performance: How fast a system should respond to requests think about the computations it would have to make and how much data would need to be stored for this to work.(users, userLocations, gyms, gymLocations, workout styles(second thought, we could recommend workout plans to users as well eventually))

Scalability: How well a system can handle an increase in users or workload in the future, what can we implement in place to protect from a system crash due to higher trafic

Security: How well a system protects against unauthorized access and data breaches people’s locations need to be inaccessible by anyone else aside from an admin. ther needs to be a safety disclaimer there has to be a chat system so users can chat or speak before they meet, preferably through a chat within the app that we have unrestricted access to. there has to be some way to protect both the main system and individual user’s personal demographic information a way to verify identities, we can look to how twitter does it, or maybe instagram and facebook. no multiple accounts withthe same email address, if its registered we need to know. *AWS would be handling most of the security as far as servers, etc. we would just have to set up our policies and permissions and what not.

Usability: How easy a system is to use -a database that is developer friendly, we’re going with aws already so what from the aws ecosystem would we need?

Maintainability: How easy it is to update and modify the system something reliable, with the potential to store an estimate of “###” users without failing powerful enough to compute locational distance and sort between, then compare desired workouts What is the scope? we would need to conduct load testing on whatever we choose to use as a server. Raspberry pi would be okay for short term but we would have to make sure we build in a way that can be changed/transported to a stronger server when the time comes. Backups. Snapshots or images at key points so we don’t have to worry about updates being lost but we also have Github for that I believe. Budget! (server device=> processing power/memory, power supply => power usage/cost, Cooling=> power usage, effectiveness, storage space=> the operating system, application code, and data, and whether or not we can add storage to it=> so if we need to test software on handling a larger lode for projections) Connectivity=> ethernet? some sort of wired connection

+++++++++

***With the nature of wha we’re handling, security is going to be one of the most important things we have to consider. If people’s locations are not secure, that will be a huge issue. If people’s identities are not secure that will be an issue. we have to figure out a way to make sure people’s locations are hidden and people go through an extensive process to verify themselves because if anyone can sign up, get someone’s location. that’s an issue. We are the gatekeepers. Also, we have to make

        DESIGN VPC SOLUTION

reference the “Owens.VPC Solution” word doc if you need a visual or a chart. Since we already have a chart we can just use it to keep things

*** check project folder in Extreme ssd, documents> project folder with other aws stuff(itse_1309)

EC2 instance chart

VPC solution

Database: Managed or UnManaged? Unmanaged might be easier so we can focus on building and features, and since this project isn’t supposed to be super time consuming. rds might be better

RDS or EC2 with SQL server? Why? EC2 in the beginning, there isk no minimum size so we can use it to get an idea of how much we may actually need. also we can switch over if need be. ec2 will give us more control and since we’re building something it would hypothetically be better in the beginning.*Contradicts but left for review

Database server specs: Type/family and size? sql, *NOT SURE SIZE YET

How will you make it resilient? not necessary for rn

How will you provide security for the PII? Configure security groups for the vpc

General Non-Fuctional Dump, Direct Link: https://docs.google.com/document/d/1sU4jIfp_2gqoxxFyLUIuz0iRzVLnOhmptkf5Dt2sNoo/edit?usp=sharing

SOULROSEGOLD commented 7 months ago

Completed for now, closing until further updates.