A modern payment form application that enables cryptocurrency-to-cash conversions and related financial transactions. Built with React, TypeScript, and Vite for a fast and responsive user experience.
NovaCrust is a web application that provides a user-friendly interface for cryptocurrency payment transactions. The application features:
- Crypto to Cash: Convert cryptocurrency to cash with support for multiple payment methods and currencies
- Cash to Crypto: Email subscription for upcoming cash-to-cryptocurrency conversion feature
- Crypto to Fiat Loan: Placeholder for future loan functionality
The application supports multiple wallet integrations (Metamask, Rainbow, WalletConnect) and various cryptocurrencies (ETH, USDT-CELO, USDT-TRON, USDT-BNB).
- React 19.2.0 - UI library
- TypeScript ~5.9.3 - Type safety
- Vite 7.2.4 - Build tool and dev server
- Tailwind CSS 4.1.18 - Utility-first CSS framework
- Radix UI - Accessible component primitives
@radix-ui/react-tabs1.1.13@radix-ui/react-select2.2.6@radix-ui/react-dropdown-menu2.1.16
- Lucide React 0.561.0 - Icon library
- React Icons 5.5.0 - Additional icons
- Formik 2.4.9 - Form state management
- Yup 1.7.1 - Schema validation
- clsx 2.1.1 - Conditional class names
- tailwind-merge 3.4.0 - Merge Tailwind classes
- class-variance-authority 0.7.1 - Component variants
- ESLint 9.39.1 - Code linting
- TypeScript ESLint 8.46.4 - TypeScript-specific linting rules
Before you begin, ensure you have the following installed:
- Node.js (v18 or higher recommended)
- pnpm (package manager) - Install globally with
npm install -g pnpm
git clone <repository-url>
cd novacrustUsing pnpm (recommended):
pnpm installAlternatively, if you prefer npm or yarn:
npm install
# or
yarn installCurrently, the application does not require any environment variables. All configuration is handled within the application code.
If you need to add environment variables in the future:
- Create a
.envfile in the root directory - Add your variables following the format:
VITE_<VARIABLE_NAME>=value - Access them in code using
import.meta.env.VITE_<VARIABLE_NAME>
Start the development server:
pnpm devThe application will be available at http://localhost:5173 (or the next available port if 5173 is in use).
Create an optimized production build:
pnpm buildThe build output will be in the dist directory.
Preview the production build locally:
pnpm previewRun ESLint to check for code quality issues:
pnpm lintnovacrust/
├── public/
│ └── assets/
│ └── images/ # SVG icons for wallets and currencies
├── src/
│ ├── modules/
│ │ ├── core/ # Shared components and utilities
│ │ │ ├── components/
│ │ │ │ ├── forms/ # Reusable form components
│ │ │ │ └── ui/ # UI primitives (tabs, select, dropdown)
│ │ │ └── lib/ # Utility functions
│ │ └── payments/ # Payment-related components
│ │ ├── components/ # Payment form components
│ │ ├── data.ts # Payment options and currency data
│ │ └── validation.ts # Form validation schemas
│ ├── App.tsx # Main application component
│ ├── App.css # Application styles
│ ├── index.css # Global styles
│ └── main.tsx # Application entry point
├── index.html # HTML template
├── vite.config.ts # Vite configuration
├── tsconfig.json # TypeScript configuration
└── package.json # Dependencies and scripts
pnpm dev- Start development serverpnpm build- Build for productionpnpm preview- Preview production buildpnpm lint- Run ESLint
- Input fields for payment and receive amounts
- Currency selection dropdowns (ETH, USDT-CELO, USDT-TRON, USDT-BNB)
- Payment method selection (Metamask, Rainbow, WalletConnect, Others)
- Form validation with real-time error messages
- Responsive design
- Email subscription form for feature notifications
- Email validation
- Coming soon placeholder
- Tab placeholder for future implementation
-
Package Manager: The project uses
pnpmas the primary package manager (evidenced bypnpm-lock.yaml). While npm/yarn will work, pnpm is recommended for consistency. -
Browser Support: The application assumes modern browser support for ES6+ features, CSS Grid, and Flexbox.
-
No Backend Integration: The current implementation is frontend-only. Form submissions are logged to the console and use mock async operations. No actual API calls are made.
-
Static Assets: All wallet and currency icons are stored as SVG files in the
public/assets/imagesdirectory and are expected to be available at build time. -
Development Port: Vite defaults to port 5173, but will automatically use the next available port if 5173 is occupied.
-
TypeScript Strictness: The project uses TypeScript with standard configuration. Path aliases (
@/*) are configured for cleaner imports.
-
No Environment Configuration: Currently, there's no environment variable setup. This simplifies initial setup but may require refactoring if backend integration or API keys are needed.
-
Mock Form Submissions: Form submissions use
setTimeoutto simulate async operations. This allows for UI development without backend integration but requires implementation of actual API calls for production. -
Incomplete Features:
- "Cash to Crypto" is a placeholder with email subscription only
- "Crypto to Fiat Loan" tab has no implementation
- These are intentional placeholders for future development
-
No State Management Library: The application uses React's built-in state management and Formik for form state. For larger applications, a global state management solution (Redux, Zustand, etc.) might be beneficial.
-
No Testing Setup: The project doesn't include testing frameworks (Jest, Vitest, React Testing Library). This speeds up initial development but may require adding tests for production readiness.
-
No Error Boundaries: The application doesn't include React Error Boundaries. Adding them would improve error handling and user experience.
-
Hardcoded Currency Data: Currency and payment options are hardcoded in
data.ts. For a production application, this data might be better served from an API or configuration service.
- Push your code to GitHub
- Import the project in Vercel
- Configure build settings:
- Build Command:
pnpm build - Output Directory:
dist - Install Command:
pnpm install
- Build Command:
- Deploy
- Push your code to GitHub
- Create a new site in Netlify and connect your repository
- Configure build settings:
- Build command:
pnpm build - Publish directory:
dist
- Build command:
- Deploy
Any static hosting service that supports Node.js build environments can host this application. Ensure the platform:
- Supports pnpm (or configure it to use npm/yarn)
- Can run the build command
- Serves the
distdirectory as static files
-
No Real Payment Processing: The application is a UI prototype and doesn't integrate with actual payment processors or blockchain networks.
-
No Wallet Connection: Wallet options (Metamask, Rainbow, WalletConnect) are UI-only and don't actually connect to wallets.
-
No Currency Conversion Logic: Amount conversions are not calculated. The form accepts user input but doesn't perform real-time conversion calculations.
-
No Backend Validation: All validation is client-side only. Server-side validation would be required for production.
-
No User Authentication: The application doesn't include user authentication or session management.
- Implement actual wallet connection functionality
- Add real-time currency conversion rates
- Integrate with payment processing APIs
- Add backend API integration
- Implement the "Crypto to Fiat Loan" feature
- Add comprehensive error handling and error boundaries
- Include unit and integration tests
- Add internationalization (i18n) support
- Implement responsive design improvements for mobile devices
[Specify your license here]
[Add contribution guidelines if applicable]