https://github.com/arjun-ms/easyforms
Create. Customize. Collect.
https://github.com/arjun-ms/easyforms
Last synced: 10 months ago
JSON representation
Create. Customize. Collect.
- Host: GitHub
- URL: https://github.com/arjun-ms/easyforms
- Owner: arjun-ms
- Created: 2025-07-14T00:41:54.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-07-14T17:04:59.000Z (11 months ago)
- Last Synced: 2025-08-29T11:56:12.232Z (10 months ago)
- Language: Python
- Size: 104 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 📝 EasyForms
A lightweight form management system built using **FastAPI** (backend) and **HTML/CSS/JS** (frontend) that enables:
- Admins to create, update, assign, and analyze dynamic forms
- Users to view assigned forms, submit responses, and track submissions
---
## Demo
[Visit the site from here](https://easyforms.onrender.com)
## 🚀 Features
### 🔐 Authentication & Authorization
- JWT-based login and refresh token system
- Role-based access control (`admin` / `user`)
- Secure password hashing
### 📄 Form Management (Admin)
- Create, update, delete dynamic forms
- Assign forms to users
- View all forms and their assigned users
### 🧑💼 User Experience
- View forms assigned to them
- Dynamically render input fields from JSON schema
- Submit responses with validation
- View submission history
### 📊 Analytics (Admin)
- View all submissions for a specific form
---
## 🧱 Tech Stack
| Layer | Tech |
|-------------|------------------------|
| Backend | FastAPI, SQLAlchemy |
| Frontend | HTML, CSS, JS |
| Database | PostgreSQL |
| Auth | JWT (access + refresh) |
| Schema | Pydantic |
---
## 🛠️ Setup Instructions
### 1. Clone & Install
```bash
git clone https://github.com/arjun-ms/EasyForms.git
cd EasyForms
pip install -r requirements.txt
```
### 2. Set Environment Variables
Create a `.env` file or set manually:
```env
DB_USER=username
DB_PASSWORD=password
DB_HOST=localhost
DB_PORT=1234
DB_NAME=db_name
SECRET_KEY=your_secret_key_here
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=120
RENDER_DB_URL=your_hosted_db_url
API_BASE_URL=your_hosted_link
```
### 3. Run the Server
```bash
uvicorn backend.main:app --reload
```
### 4. Access the App
- Backend: `http://127.0.0.1:8000`
- Swagger UI: `http://127.0.0.1:8000/docs`
- Frontend: Open `index.html`, `user-dashboard.html`, etc., in a browser
---
## API Docs
> 👉 Refer to the [API.md](./API.md) file for complete endpoint details.
## 📌 Project Progress
### ✅ Core Functionalities
- [x] Auth (register, login, refresh)
- [x] Admin Form Management
- [x] Form assignment & retrieval
- [x] User form submission
- [x] Submission history
- [x] Basic analytics (submissions per form)
## ✅ Success Criteria
- [x] Admin can manage and assign forms easily
- [x] Role-based access is enforced
- [x] Forms render dynamically using schema
- [x] Submissions are tracked per user
- [x] Clean code structure
---
## 📌 Contributors
- **Arjun M S** – Developer
[SnapCV](https://arjun-ms.snapcv.me/)
---
## 📜 License
MIT License – use freely, credit appreciated.