Payoo - MFS Web App
Payoo is a Mobile Financial Service (MFS) web application that enables users to handle various financial transactions, including money transfers, bill payments, coupon redemption, and account management. Designed with custom routing and a seamless user experience, Payoo ensures users have control over their transactions and balances within a responsive and intuitive UI.
Features
User Authentication
- Login & Registration: Users can register or log in using a simple interface. Data is stored in local storage.
- Tab Toggle: Users can easily switch between login and registration tabs, creating a smooth onboarding experience.
- Multiple Account Creation: Users can register multiple accounts directly from the same browser instance, each uniquely identifiable.
- Browser-based Data: All user data is stored in the browser's local storage. No backend is connected, so data will be lost when the browser is uninstalled or storage is cleared.
- Logout Functionality: The app includes a logout button, allowing users to securely end their sessions, ensuring privacy and flexibility when switching between accounts.
Loading Spinner
The application features a loading spinner that enhances user experience during login process.
Display of Spinner: Upon clicking the login button, the loading spinner is shown immediately to indicate that the login process has started.
Delay for Feedback: To ensure that users can see the spinner, a brief delay (set to 500 milliseconds) is introduced before transitioning to the main screen. This allows users to receive immediate visual feedback while the application loads necessary user data.
Hiding the Spinner: The spinner is hidden once the user data loading is complete or if there is no significant delay, providing a seamless transition to the main interface.
This feature helps inform users that their login action is being processed and improves the overall responsiveness of the application.
Transactions
- Transaction Types: Implemented multiple transaction types, including:
- Add Money
- Cash Out
- Money Transfers
- Coupon Redemptions
- Bill Payments
- Transaction History: All transactions are saved in local storage and displayed on a dedicated history page, providing users with clear and organized transaction records.
- Coupon Redemption: Users can redeem unique coupons for rewards directly through the app.
Validation & Security
- Form Validations: Comprehensive validation across all transaction forms ensures error-free consistent user experience.
- Duplicate Prevention: Prevents self-transactions or redundant coupon redemptions.
- Balance Limits: Checks for sufficient balance during withdrawals and for account limits during deposits.
Routing System
- Custom Routing: Navigation through various menus is handled by a custom routing system that ensures smooth transitions between pages.
- URL Handling: Incorrect or invalid menu URLs display a friendly error message, guiding users to the correct options.
Technologies Used
- HTML/CSS: Structure and styling.
- Tailwind CSS: Custom, responsive, and utility-first CSS.
- jQuery: DOM manipulation.
- FontAwesome: Iconography.
- TypeScript: Typed JavaScript for robust code.
- OOP Design: Key functionalities are structured with object-oriented principles, especially within the
User
class, improving modularity and scalability.
- Vite: Development environment and Build Tool.
- Day.js: Date and time manipulation.
- Notyf: For displaying toast notifications to enhance user experience.
- bcryptjs & crypto-browserify: For secure password hashing and compatibility across environments.
- Custom ID Generation: Utilizing
@nazmul-nhb/id-generator
for unique user IDs.
- Dynamic Color: Utilizing
color-generator-fl
for dynamic shadow and background colors in transaction history based on types.
- Browser Local Storage: For data storage and retrieval of user data and transactions.
Setup and Installation
Clone the repository and install dependencies:
git clone https://github.com/nazmul-nhb/payoo-ts-jquery.git
cd payoo-ts-jquery
npm install
Running Locally
To start the development server:
npm run dev
Building for Production
To create an optimized build:
npm run build
Live Demo
Experience the app here on Vercel.