LensLex is a full-stack event management solution tailored for photography studios to efficiently handle bookings, media, event assignments, and staff coordination. Built as part of the VDSP initiative, it empowers customers and staff through an intuitive, role-based platform.
- React.js with TypeScript
- Vite (lightning-fast dev environment)
- Material UI (MUI) for responsive components
- Axios for API communication
- React Router for routing
- Day.js for date management
- Hot Toast for notifications
api/
: Axios-based API call logicassets/
: Static files (e.g., images, logos)components/
: Reusable UI components (e.g., Sidebar, Navbar)context/
: Global state management (React context API)helper/
: Utility logic (e.g., session checkers, validators)interfaces/
: TypeScript interfaces (e.g.,UserDto
,ReservationDto
)pages/
: Core page components for each roleroutes/
: Protected and role-based routing logicutils/
: Utility functions (e.g., formatters)
- Java Spring Boot 3.x
- Spring Security with JWT Auth
- Spring Data JPA
- Hibernate Validator
- MySQL
- Gradle for build automation
advice/
: Centralized exception handling using@ControllerAdvice
config/
: Security configuration, CORS, JWT filterscontroller/
: REST API endpoints grouped by featuredto/
: Data Transfer Objects for clean request/responseentity/
: JPA entities (User
,Album
,Reservation
, etc.)exception/
: Custom exceptions (e.g.,ResourceNotFoundException
)filter/
: JWT request filterhelpers/
: Session and time validation logicrepository/
: Spring Data Repositoriesservice/
: Business logic layertype/
: Enums and constantsutils/
: Utility classesresources/
: Configuration files likeapplication.properties
- Dashboard and report generation
- Add/Manage holidays
- Manage users and roles
- Assign staff to events
- Approve/reject reservations
- View & update album statuses
- View own assigned events (calendar)
- Change album status after editing
- Manage assigned packages
- Notification system
- Register, login, and reserve sessions
- Upload payment proof (Full payment)
- View album and reservation status
- View payment history and receive receipts
- Receive notifications
- .gradle/
- .idea/
- build/
- gradle/
- src/
- main/
- java/
- com/
- app/
- vdsp/
- advice/
- config/
- controller/
- dto/
- entity/
- exception/
- filter/
- helpers/
- repository/
- service/
- type/
- utils/
- VdspApplication.java
- vdsp/
- app/
- com/
- resources/
- java/
- test/
- main/
- .env
- .gitignore
- build.gradle
- gradlew
- gradlew.bat
- .vite/
- node_modules/
- public/
- src/
- api/
- assets/
- components/
- context/
- helper/
- interfaces/
- pages/
- routes/
- utils/
- App.css
- App.tsx
- index.css
- main.tsx
- vite-env.d.ts
- .env
- .gitignore
- client.code-workspace
- eslint.config.js
- index.html
- LICENSE
- package.json
- package-lock.json
- README.md
- tsconfig.app.json
- tsconfig.json
- tsconfig.node.json
- vite.config.ts
- Clone the project:
git clone https://github.com/your-repo/vdsp_spring_backend.git
- Update
.env
orapplication.properties
with DB credentials - Run the project:
./gradlew bootRun
- Clone the frontend:
git clone https://github.com/your-repo/VDSP_FRONTEND.git
- Install dependencies:
npm install
- Create
.env
and setVITE_API_BASE_URL
- Start dev server:
npm run dev
- Calendar view with session-based date colors and tooltips
- Album management with UUIDs
- Token-based protected routes and role management
- Real-time toast notifications
- Dynamic dropdowns and package assignments
- Optimized API response structure (
ApiResponse<T>
)
Panchali Samarasinghe
University of Kelaniya (MIT) | SLIIT (Software Engineering)
This project is licensed under MIT – for educational and demonstration purposes only.