ZipLink is a full-stack URL shortener web application built with Spring Boot. It allows users to create short, shareable links, manage them through a dashboard, and track usage with click analytics.
This project was developed primarily to learn and understand the fundamentals of Spring Boot and building RESTful web applications.
The main focus was on:
Backend development and application architecture Authentication and security using Spring Security Designing and implementing core business logic
The frontend was kept secondary, and AI tools were used to assist in building UI components and speeding up development where appropriate.
- 🔐 User authentication (Register / Login)
- 🔗 Generate short URLs from long links
- ✏️ Custom alias support (optional)
- 📊 Dashboard with URL management
- 👁️ Click tracking for each link
- 🗑️ Delete URLs
- 🔒 Secure password storage using BCrypt
- ⚡ Session-based authentication
- Java 17
- Spring Boot
- Spring Security
- Spring Data JPA
- JSP (Java Server Pages)
- Bootstrap
- H2 (file-based database)
The application follows a layered architecture:
Controller → Service → Repository → Database
- Controllers handle HTTP requests and responses
- Services contain business logic
- Repositories interact with the database
- Uses Spring Security with session-based authentication
- User credentials are validated via AuthenticationManager
- Authentication is stored in the SecurityContext and maintained via HTTP session
- Generates a random short code using SecureRandom
- Ensures uniqueness by checking existing entries in the database
- Supports custom aliases with validation and reserved keyword checks
- Short URL is resolved from database
- Redirects to original URL
- Click count is incremented for analytics
com.ziplink.app
controller # Handles HTTP requests
service # Business logic
repository # Database operations
entity # JPA entities
dto # Request/response models
config # Security configuration
exception # Global error handling
- Java 17+
- Maven
mvn spring-boot:run
App will start at: http://localhost:8080
- URL: http://localhost:8080/h2-console
- JDBC URL: jdbc:h2:file:./data/ziplinkdb
- Username: admin
- Password: adminroot
mvn test
This project was primarily designed and developed by me, with selective assistance from AI tools.
- Assisted with boilerplate configurations (e.g., Spring Security setup)
- Suggested validation patterns and annotations
- Helped with UI development (JSP + Bootstrap)
- Supported debugging and code readability improvements
- Assisted in generating README content
- Designed the project architecture (Controller → Service → Repository)
- Implemented core business logic (URL generation, collision handling, click tracking)
- Built the basic frontend integration
- Integrated authentication flow using Spring Security
- Designed and handled application-level error handling
AI was used as a development assistant, not a replacement for understanding.
- Redis caching
- Advanced analytics
- Link expiration
- Rate limiting
- Migration to MySQL/PostgreSQL
- Spring Security authentication
- Layered backend architecture
- Real-world system design
- Performance and scalability trade-offs
SUNAG M
Give it a star if you like it!