Match Form is a dynamic player registration and form management platform built using React, TypeScript, and Vite. The project allows users to create, edit, and analyze forms for player registration, event planning, and surveys.
- 📋 Form Creation & Management – Create and customize various forms for player registration and surveys.
- 🎨 Modern UI – Built with Tailwind CSS for responsive and sleek design.
- 🔄 Dynamic Components – Modular form components including dropdowns, checkboxes, and input fields.
- 📊 Analysis & Reporting – Visualize and filter form responses with analytics tools.
- 🔐 Authentication – User authentication with Firebase for secure access.
- 📂 File Uploads – Integrated uploader for adding company logos and media.
- ⚡ Fast Performance – Powered by Vite for lightning-fast development and build times.
match-form/
│
├── client/ # Frontend (React + Vite)
│ ├── public/ # Static assets
│ ├── src/ # Source code
│ │ ├── components/ # UI and core components
│ │ │ ├── core/ # Core functionality
│ │ │ ├── ui/ # Reusable UI components
│ │ │ └── forms/ # Form components (creation, dropdowns, inputs)
│ │ ├── pages/ # Pages (Auth, Analysis, Form Creation)
│ │ ├── services/ # API services (user, auth, forms)
│ │ ├── lib/ # Utility functions and configuration
│ │ └── App.tsx # Main React App component
│ ├── vite.config.ts # Vite configuration
│ ├── tailwind.config.js # Tailwind CSS configuration
│ ├── package.json # Client dependencies
│ └── index.html # Main HTML file
│
└── server/
├── src/ # Source code for server
│ ├── controllers/ # Route controllers (form, user, response)
│ ├── services/ # Business logic and data handling
│ ├── routes/ # Express routes for APIs
│ ├── database/ # Prisma ORM for database schema
│ ├── middleware/ # Authentication and token verification
│ ├── utils/ # Utility functions (error handling, validation)
│ └── index.ts # Main server entry point
├── package.json # Server dependencies
├── prisma/ # Prisma configuration and schema
└── nodemon.json # Nodemon configuration for development
Ensure you have the following installed:
- Node.js (v18 or higher)
- MongoDB (for backend database)
- Vite (for frontend development)
- Prisma (for database ORM)
-
Clone the repository
git clone https://github.com/your-username/match-form.git
-
Install dependencies for both client and server
npm run install:client npm run install:server
-
Set up environment variables
- Create
.env
files in both theclient
andserver
directories. - Fill in the required fields such as:
DATABASE_URL=mongodb://localhost:27017/match-form JWT_SECRET=your_jwt_secret FIREBASE_API_KEY=your_firebase_key
- Create
-
Run the development server
npm run dev
This will concurrently start both the frontend and backend servers.
-
Access the application
- Frontend:
http://localhost:5173
- Backend API:
http://localhost:3000/api
- Frontend:
VITE_APP_BASE_URL=http://localhost:3000/api
VITE_FIREBASE_API_KEY=your_firebase_api_key
DATABASE_URL=mongodb://localhost:27017/match-form
JWT_SECRET=your_jwt_secret
FIREBASE_SERVICE_ACCOUNT=./src/lib/serviceAccountKey.json
POST /api/auth/signup
– User registrationPOST /api/auth/login
– User loginPOST /api/auth/forgot-password
– Reset password request
GET /api/forms
– Retrieve all formsPOST /api/forms/create
– Create a new formPUT /api/forms/:id
– Update form by IDDELETE /api/forms/:id
– Delete form by ID
GET /api/responses
– Fetch all responsesPOST /api/responses/:formId
– Submit form responses
- Frontend:
- React + Vite
- TypeScript
- Tailwind CSS
- Axios
- React Hook Form
- Firebase Authentication
- Backend:
- Node.js
- Express.js
- Prisma (ORM)
- MongoDB
- JWT for Authentication
- Deployment & Tools:
- Vercel (Frontend)
- DigitalOcean (Backend)
- ESLint, PostCSS, Prettier
- UI/UX Design – Completed in November
- Welcome Card Page – November 22, 2024
- Thank You Card Page – November 23, 2024
- Form Menu – Half completed by November 24, 2024
- Question UI – Completed by November 25, 2024
- Multiple Choice Question – November 26, 2024
Contributions are welcome! If you have ideas to improve the project, please follow these steps:
- Fork the repository
- Create a new branch (
feature/new-feature
) - Commit your changes
- Push to the branch
- Open a Pull Request
This project is licensed under the ISC License.