Ha Project Report Template
Ha Project Report Template
Project Report
Contents
1 Introduction...............................................................................................................1
1.1 Background....................................................................................................1
1.2 Goals...............................................................................................................1
1.3 Scope.............................................................................................................. 1
1.4 Limitations......................................................................................................2
2 Functional Architecture............................................................................................2
3 Technical Architecture..............................................................................................3
3.1 React............................................................................................................... 3
3.2 Django.............................................................................................................4
3.3 AWS Cloud......................................................................................................5
3.3.1 S3.................................................................................................................... 5
3.3.2 Amplify............................................................................................................5
3.3.3 DynamoDB..................................................................................................... 6
3.3.4 Cognito........................................................................................................... 6
3.3.5 Cloud Watch...................................................................................................6
4 Tools & Resources....................................................................................................6
4.1 Git....................................................................................................................6
4.2 VSCode IDE....................................................................................................7
4.3 AWS CLI..........................................................................................................7
5 Functional Specifications........................................................................................ 7
6 Functional Flow.........................................................................................................7
7 Technical Flow.......................................................................................................... 7
8 REST APIs & Data Model..........................................................................................7
9 Non Functional Requirements(NFRs).....................................................................7
10 Sample Code Snippets..................................................................................8
11 Application Screenshots...............................................................................8
1 Introduction
Micro-Fin-Word is A micro-finance based Crowdfunding platform for lending micro loans to small
businesses. On Micro-Fin-World platform, the profile of the business owners, business details and loan
requirement are published. Users can contribute by pooling the money for a profile. When the pooled
money reaches the loan amount, loan is disbursed to the business owner. When the business owner
repays, the contributions made are returned to users.
1.1 Background
Traditionally, for the low-income and lesser privileged individuals/groups in the society, bank loans and
other forms of financial assistances have been hard to come by for fear of defaults and bad debts. It is in
this backdrop that microfinance is emerging as a new business opportunity for financial institutions, which
promises to help the underprivileged become financially stable, at the same time ensuring that financial
institutions continue to make profits.
Microfinance is the process of providing financial services such as loans, savings, etc. at a micro level or
small scale to individuals with little or no income.
A microfinance loan passes through various stages or events from the moment it is given till the time it is
repaid. The process begins with a loan application form in which the borrower is asked to furnish their
details and the kind of facility requested. The bank’s loans or credit department appraises the application
and takes a decision whether the applicant is eligible for the loan asked and whether loan can be extended
to that customer. The bank will apply its own parameters in arriving at this decision. Assuming that the loan
is sanctioned the bank gives a commitment and stipulates terms and conditions governing the same. The
bank may levy a processing charge at this stage. The loan amount is then disbursed and credited to the
settlement account of the borrower who draws the amount, uses it for the purpose for which it was taken.
Interest accrues on the account which has to be serviced by the borrower besides repaying the principal
amount as per the repayment schedule. If the loan is not repaid or there is a delay the loan asset’s status
is changed to reflect its deterioration. On the other hand if the microfinance account is conducted well it will
close on the date the last instalment is due and paid.
1.2 Goals
This platform aims for Financial inclusion of small businesses who are often ignored by Banks.
1.3 Scope
User Authentication and Account Management
Create business profiles for business owners
Create & Publish loan applications for business owners
Browse & View loan applications, business details and profiles of business owners
Lend & Pool money, track & disburse loan on reaching target, track repayment & payback users once
the loan is repaid
Basic reporting and usage analytics
1.4 Limitations
Mock Payment gateway will be used for this app to simulate payment
1
The app will support only USD($) currency
2 Functional Architecture
Functional architecture is an architectural model that identifies enterprise functions, interactions, and
corresponding IT needs. At its core, is a design paradigm. When you have information, processes, or different
solution modules and need to organize them into an enterprise system, you can use functional architecture as a
framework
Functional architecture for the Micro-Fin-World platform has been depicted in the below diagram. In the later
section of this report, Functional specifications, details of the modules and their features will be covered.
3 Technical Architecture
Technical architecture is a blueprint of the system depicting the various components and how they interact with
each other. Technical architecture for the Micro-Fin-World app has been depicted below.
Micro-Fin-World is a full-stack application built on Cloud-First principles. Cloud-First is the new norm of
developing modern applications which can scale to millions of users. This app has been built on React-
SpringBoot-AWS Tech stack where:
React has been used for Front-End or the Web based UI
Springboot has been used for Back-End or the component where the business logic has been
implemented
AWS Cloud: Various AWS cloud services has been used to create relevant resources for developing this
app and then eventually hosting and running the app.
Let’s go thru each of the component from the technical architecture diagram.
3.1 React
As its official tagline states, React is a library for building user interfaces. React is not a framework – it's
not even exclusive to the web. It's used with other libraries to render to certain environments. For instance,
React Native can be used to build mobile applications.
To build for the web, developers use React in tandem with ReactDOM. React and ReactDOM are often
discussed in the same spaces as — and utilized to solve the same problems as — other true web development
frameworks. When we refer to React as a "framework", we're working with that colloquial understanding.
React's primary goal is to minimize the bugs that occur when developers are building UIs. It does this through
the use of components — self-contained, logical pieces of code that describe a portion of the user interface.
These components can be composed together to create a full UI, and React abstracts away much of the
rendering work, leaving you to concentrate on the UI design.
3
3.2 Django
Django is a high-level Python web framework that enables rapid development of secure and maintainable
websites. Built by experienced developers, Django takes care of much of the hassle of web development, so
you can focus on writing your app without needing to reinvent the wheel. It is free and open source, has a
thriving and active community, great documentation, and many options for free and paid-for support.
Complete
Django follows the "Batteries included" philosophy and provides almost everything developers might want to do
"out of the box". Because everything you need is part of the one "product", it all works seamlessly together,
follows consistent design principles, and has extensive and up-to-date documentation.
Versatile
Django can be (and has been) used to build almost any type of website — from content management systems
and wikis, through to social networks and news sites. It can work with any client-side framework, and can
deliver content in almost any format (including HTML, RSS feeds, JSON, and XML).Internally, while it provides
choices for almost any functionality you might want (e.g. several popular databases, templating engines, etc.), it
can also be extended to use other components if needed.
Secure
Django helps developers avoid many common security mistakes by providing a framework that has been
engineered to "do the right things" to protect the website automatically. For example, Django provides a secure
way to manage user accounts and passwords, avoiding common mistakes like putting session information in
cookies where it is vulnerable (instead cookies just contain a key, and the actual data is stored in the database)
or directly storing passwords rather than a password hash.
A password hash is a fixed-length value created by sending the password through a cryptographic hash
function. Django can check if an entered password is correct by running it through the hash function and
comparing the output to the stored hash value. However due to the "one-way" nature of the function, even if a
stored hash value is compromised it is hard for an attacker to work out the original password.Django enables
protection against many vulnerabilities by default, including SQL injection, cross-site scripting, cross-site
request forgery and clickjacking (see Website security for more details of such attacks).
Scalable
Maintainable
Django code is written using design principles and patterns that encourage the creation of maintainable
and reusable code. In particular, it makes use of the Don't Repeat Yourself (DRY) principle so there is no
unnecessary duplication, reducing the amount of code. Django also promotes the grouping of related
functionality into reusable "applications" and, at a lower level, groups related code into modules (along
the lines of the Model View Controller (MVC) pattern).
Portable
Django is written in Python, which runs on many platforms. That means that you are not tied to any
particular server platform, and can run your applications on many flavors of Linux, Windows, and macOS.
Furthermore, Django is well-supported by many web hosting providers, who often provide specific
infrastructure and documentation for hosting Django sites.
3.3.1 S3
Amazon Simple Storage Service (Amazon S3) is an object storage service offering industry-leading
scalability, data availability, security, and performance. Millions of customers of all sizes and industries
store, manage, analyze, and protect any amount of data for virtually any use case, such as data lakes,
cloud-native applications, and mobile apps. With cost-effective storage classes and easy-to-use
management features, you can optimize costs, organize and analyze data, and configure fine-tuned
access controls to meet specific business and compliance requirements.
3.3.2 Amplify
AWS Amplify is everything you need to build web and mobile apps. Easy to start, easy to scale. Deploy server-
side rendered and static frontend apps, develop UI, add features like auth and storage, connect to real-time
data sources, and scale to millions of users. No cloud expertise required. Deploy an app frontend with easy Git-
based workflows and support for any server-side web framework. Zero-config Next.js and Nuxt deployments
offer global availability, reliability, and lower latency from the Amazon CloudFront Global Edge Network in just a
few clicks. Fully-managed CI/CD and automatic scale make pushing new features to high-traffic web
applications seamless.
3.3.3 DynamoDB
Amazon DynamoDB is a serverless, NoSQL database service that allows you to develop modern applications at
any scale. As a serverless database, you only pay for what you use and DynamoDB scales to zero, has no cold
starts, no version upgrades, no maintenance windows, no patching, and no downtime maintenance. DynamoDB
offers a broad set of security controls and compliance standards. For globally distributed applications, DynamoDB
global tables is a multi-Region, multi-active database with a 99.999% availability SLA and increased resilience.
5
DynamoDB reliability is supported with managed backups, point-in-time recovery, and more. With DynamoDB
streams, you can build serverless event-driven applications.
3.3.4 Cognito
Amazon Cognito lets you add user sign-up, sign-in, and access control to your web and mobile applications within
minutes. It is a developer-centric, cost-effective service that provides secure, tenant-based identity stores and
federation options that can scale to millions of users. Amazon Cognito processes more than 100 billion
authentications per month providing customer identity and access management (CIAM) for your applications.
4.1 Git
Git is a distributed version control system[9] that tracks versions of files. It is often used to control source code by
programmers who are developing software collaboratively.Design goals of Git include speed, data integrity, and
support for distributed, non-linear workflows — thousands of parallel branches running on different computers.
As with most other distributed version control systems, and unlike most client–server systems, Git maintains a local
copy of the entire repository, also known as "repo", with history and version-tracking abilities, independent of
network access or a central server. A repository is stored on each computer in a standard directory with additional,
hidden files to provide version control capabilities.[13] Git provides features to synchronize changes between
repositories that share history; copied (cloned) from each other. VSCode IDE
5 Functional Specifications
A functional specification is a formal document used to describe a product's intended capabilities, appearance
and interactions with users in detail for software developers. The functional specification is a kind of guideline
and continuing reference point as the developers write the programming code.
Add it from the project docs which has been shared in Teamzhive
6 Functional Flow
Make relevant changes from ppt template and add it here. Elaborate as needed.
7 Technical Flow
Make relevant changes from ppt template and add it here. Elaborate as needed.
Attributes that make the product affordable, easy to use, and accessible, for example, come from non-functional
requirements. They also keep functional requirements in line, so to speak, since they often act as constraints or
quality goals for functional requirements. For example, by defining performance as a non-functional
requirement, you're essentially setting a limit on how complex certain functional features can be to ensure the
overall system meets the desired performance standards.
Non-functional requirements are often considered alongside functional requirements when prioritizing backlog
items.
7
You can also add how to run the application. Refer to Readme.md file
11 Application Screenshots
Add some screen-shots from your application.