Final - Sem VI Project

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 68

Department of Computer Science

Gujarat University
Master of Computer Application

FinTech Decision Support System


Presented By: Under the Guidance of :
05 - Nirav Chavda Dr. Hardik Joshi

1
Table of Content
● Company Profile
● Project Profile
● Existing Systems
● System Overview
● Proposed System
● Software Development Model
● System Diagrams
● System Security
● System Testing
● Future Enhancements
● Bibliography

2
Company Profile

● Incubyte is a remote-first company that helps its clients craft future-


ready software products that can adapt to changing business needs.

● Incubyte’s goal is to focus equally on the explicit aspects of software


development as well as the implicit ones, using best practices like
Software Craftsmanship, eXtreme Programming, Agile Mindset, TDD,
Constant Refactoring, Continuous Delivery & Automation Testing.

3
Project Profile

● Aim: To develop a system which provides multiple kind of information


about a person through phone number & email for making financial
decisions while assessing the risks involved.
● Project Duration: 6 Months
● Technology: Java, Spring, Go, AWS
● Tools: IntelliJ Idea, Git(VCS)

4
Features

● Bundle-wise Information
● Data Partners
● Aggregation
● Enrichment
● Concurrency Management
● Customer Management
● Subscription Management
● Transaction Management

5
Fintech Companies

● Services like Credit Cards, loans etc.


● Concern while providing financial service
● Are there any risks involved with this person?

6
Existing Systems

● Use limited data to compute credit scores


● How Fintech Decisioning solves the problem?
○ Multiple data sources
○ Data Partners
○ Bundle System

7
Bundles & Data Partners
Bundle Information Data Partner

General information about a phone


Basic Bundle number of an email address i.e. is Alpha, Bravo
valid, carrier, ported, domain.

First name, middle name, last


Profile Bundle Charlie, Tango
name, gender, date of birth.

Address Bundle Address of the person Delta

Facebook Bundle Facebook information Echo

Google Bundle Google Information Foxtrot

Twitter Bundle Twitter Information Echo

IP Bundle IP information and location Golf


8
System Overview

● Deliver data through a single API


● Flow
○ Request
○ Gateway
○ API
○ Standardization
○ Data Partner
○ Enrichment Engine
○ Response

9
Architecture Diagram

10
Request
{ {
"phoneNumber": "String", "phoneNumber": “+919879847769”,
"countryCode": "String", "countryCode": “IN”,

"email": "String", "email": “nmchavda99@gmail.com”,


"ip": “41.55.1.117”,
"ip": "String",
"bundles": “BASIC, PROFILE, ADDRESS,
"bundles": "List<String>" IP”
} }

11
Response
{ {
"data": { "data": {
"basic": BasicResponse, "basic": { “phone”: {…}, “email”: {…} },
"profile": ProfileResponse, "profile": { “phone”: {…}, “email”: {…} },
"address": AddressResponse, "address": { “phone”: {…} },
"facebook": FacebookResponse, "facebook": { “phone”: {…}, “email”: {…} },
"google": { “phone”: {…}, “email”: {…} },
"google": GoogleResponse,
"twitter": { “phone”: {…}, “email”: {…} },
"twitter": TwitterResponse,
"ip": {isp, location: {…} },
"ip": IpResponse
},
},
"errors“: []
"errors": List<String> }
}

12
Request-Response

● Parallel Calls
● Wait for response

13
Aggregation

● Aggregate responses
● Single response
● Internal Aggregation

14
Enrichment

● Call Data Partner API


● Get Data Partner Response
● Response to Enrichment Engine
● Get Specific Bundle Response

15
Alpha Enrichment

16
Bravo Enrichment

17
Charlie Enrichment

18
Delta Enrichment

19
Echo Enrichment

20
Foxtrot Enrichment

21
Golf Enrichment

22
Tango Enrichment

23
Aggregation

24
Error Response
{
"data": {
"basic": null,
"profile": null,
"address": null,
"facebook": null,
"google": null,
"twitter": null,
"ip": null
}
"errors": [
String,
String
}
]
} 25
Response Scenarios

● OK (200)
● Bad Request (400)
● Unauthorized (401)
● Not Found (404)
● Internal Server Error (500)

26
Customer Management

● Access to authenticated customer


● Manage Subscription to bundles

27
Database Design

● Customer
● Bundle
● Subscription
● Request
● Response

28
Customer

Column Name Data Type Attributes

customerId Varchar Primary Key

name Varchar Not Null

phoneNumber Varchar Unique

email Varchar Unique

country Varchar Not Null

status Varchar Default: INACTIVE

createdAt DateTime Default: CURRENT_TIMESTAMP

updatedAt DateTime Default: CURRENT_TIMESTAMP

29
Bundle

Column Name Data Type Attributes

bundleId Int Primary Key, Auto Increment

bundleName Varchar Not Null, Unique

createdAt DateTime Default: CURRENT_TIMESTAMP

updatedAt DateTime Default: CURRENT_TIMESTAMP

30
Subscription

Column Name Data Type Attributes

subscriptionId Varchar Primary Key

customerId Varchar Foreign Key => Customer Table

bundleId Int Foriegn Key => Bundle Table

status Varchar Default: INACTIVE

createdAt DateTime Default: CURRENT_TIMESTAMP

updatedAt DateTime Default: CURRENT_TIMESTAMP

31
Request

Column Name Data Type Attributes

requestId Varchar Primary Key

customerId Varchar Foreign Key => Customer Table

url Varchar Not Null

method Varchar Not Null, Default: GET

requestBody Varchar NULL

requestTimestamp DateTime Default: CURRENT_TIMESTAMP

32
Response

Column Name Data Type Attributes

responseId Varchar Primary Key

requestId Varchar Foreign Key => Request Table

responseBody Varchar NULL

responseTimestamp DateTime Default: CURRENT_TIMESTAMP

33
Class Diagram

34
Software Development Model

● Being agile, we follow Extreme Programming practices


● Better responsiveness to the changing customer requirements
● Disciplines include pair programming, small releases, continuous
refactoring, continuous integration, continuous deployments & test
driven development.
● Stories, sub-tasks, iterations & retrospectives.

35
36
Use Case Diagram

37
Activity Diagram

Authentication

38
Activity Diagram

Search

39
Sequence Diagram

40
Sequence Diagram

41
System Security

● Static Code Analysis


○ Sonar
○ Google Error Prone
● Sops
● AWS Auth
● Other concerns

42
Sops

43
System Testing

● TDD
○ Outside-In
● Integration Tests
○ Karate Test Cases
○ Feature Files
● Unit Tests

44
45
46
47
48
49
50
Department of Computer Science 51
52
53
54
55
56
57
58
59
60
61
62
63
64
Future Enhancements

● Data Partner Integrations


● Own Database
● Match API
● Frequent Releases

65
Bibliography

● Book: Sandro Mancuso - Software Craftsman, The_ Professionalism,


Pragmatism, Pride - Pearson (2014)
● Book: Robert C. Martin - Clean Code A Handbook of Agile Software
Craftsmanship - Prentice Hall (2008)
● Book: Robert C. Martin - The Clean Coder_ A Code of Conduct for
Professional Programmers - Prentice Hall (2011)
● Book: Kent Beck, Cynthia Andres - Extreme Programming Explained_
Embrace Change (2nd Edition) - Addison-Wesley Professional (2004)

66
Bibliography

● Reactive Programming Trainings by Victor Rentea


● Book: Java by Comparision
● Video: Reactive Programming in JAVA | Project Reactor Full Tutorial
● Video: Do’s and Don’ts: Avoiding First-Time Reactive Programmer
Mines
● Video: Avoiding Reactor Meltdown

67
Thank You

68

You might also like