Digitize is a powerful, modern web application designed to streamline the process of digitizing and managing deed records. Built with Next.js 15, it provides a robust platform for data entry, validation, and regional record organization.
- 🔐 Secure Authentication: Role-based access control (RBAC) using JWT and secure cookies.
- 🏢 Regional Management: Hierarchical organization of records by Districts and Registration Offices (RO).
- 📦 Batch Processing: Efficient workflow management through record batching.
- 📑 Deed Digitization: Comprehensive forms for deed entry with real-time validation.
- 🛡️ Data Integrity: Advanced checks for duplicate deeds and overlapping page ranges across years and offices.
- ⚙️ Automated Setup: Built-in seeding and migration tools for rapid environment setup.
- 🎨 Premium UI: Clean, responsive, and dynamic interface built with Tailwind CSS and Shadcn UI.
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- Database: MongoDB with Mongoose
- Styling: Tailwind CSS 4 & Shadcn UI
- State Management: Zustand
- Form Handling: React Hook Form & Zod
- Authentication: Jose (JWT) & BcryptJS
The project follows a clean Controller-Service-Repository pattern for the backend, ensuring separation of concerns and maintainability.
src/app: Next.js pages and API routes.src/controllers: Request handling and response formatting.src/services: Core business logic and validations.src/repositories: Direct data access layer for Mongoose models.src/models: Database schemas and types.src/components: Reusable UI components.src/store: Client-side state management.
- Node.js 20.x or later
- MongoDB instance (local or Atlas)
-
Clone the repository:
git clone <repository-url> cd digitize
-
Install dependencies:
npm install
-
Set up environment variables: Create a
.envfile in the root directory and add the following:MONGODB_URI=your_mongodb_connection_string JWT_SECRET=your_jwt_secret IMAGE_BASE_URL=your_image_base_url
-
Run the development server:
npm run dev
-
Initialize the database (Seeds default data): Navigate to
/api/setupor use the setup page if available to initialize districts, ROs, and the default admin user.
npm run dev: Starts the development server.npm run build: Builds the application for production.npm run start: Starts the production server.npm run lint: Runs ESLint for code quality checks.
This project is private and intended for internal use only.