A modern, secure file sharing platform with user and group-based access control, built with Spring Boot backend and Next.js frontend.
This application provides a comprehensive solution for secure file storage and sharing with granular permission controls. Users can upload files, organize them, share with other users or groups, and maintain version control.
- User Authentication & Authorization: Secure login and registration
- File Management: Upload, download, and manage files
- Version Control: Track changes with file versioning
- Sharing Capabilities: Share files with individual users or groups
- Permission Control: Granular access permissions for shared content
- Group Management: Create and manage user groups
- Responsive UI: Modern interface that works on all devices
- Large File Support: Handle files up to 50MB
- Framework: Spring Boot
- Database: PostgreSQL with JPA/Hibernate
- Security: JWT Authentication
- Storage: Azure Blob Storage for file data
- Documentation: OpenAPI/Swagger
- Build Tool: Maven/Gradle
- Framework: Next.js 15 with React 19
- Styling: TailwindCSS
- State Management: React Hooks
- Form Handling: React Hook Form with Zod validation
- UI Components: shadcn/ui and Aceternity UI
- Authentication: JWT with HTTP-only cookies
The application follows a microservices-inspired architecture:
- Frontend Service: Next.js application that provides the user interface
- Backend API Service: Spring Boot REST API that handles business logic
- Database: PostgreSQL for structured data storage
- Blob Storage: Azure Storage for file content
- Node.js 18+ (Frontend)
- Java 17+ (Backend)
- PostgreSQL database
- Azure Storage account
- Docker (optional for containerized deployment)
- Clone the backend repository:
git clone https://gitlab.fit.cvut.cz/dziedgrz/tjv_backend.git
cd tjv_backend
- Configure the application by filling in the necessary values in
application.properties
:
# Database Configuration
spring.datasource.url=jdbc:postgresql://localhost:5432/your_database
spring.datasource.username=your_username
spring.datasource.password=your_password
# Azure Storage Configuration
azure.storage.connection.string=your_azure_connection_string
azure.storage.container.name=your_container_name
azure.storage.queue.name=your_queue_name
# JWT Security Configuration
application.security.jwt.secret-key=your_jwt_secret_key
application.security.jwt.access_expiration=3600000
application.security.jwt.refresh_expiration=86400000
- Build and run the backend:
./mvnw spring-boot:run
The backend API will be available at: http://localhost:8080/api/v1
- Clone the frontend repository:
git clone https://gitlab.fit.cvut.cz/your-username/tjv_frontend.git
cd tjv_frontend
- Install dependencies:
npm install
- Create a
.env.local
file with required configuration:
NEXT_PUBLIC_API_URL=http://localhost:8080/api/v1
- Run the development server:
npm run dev
The frontend will be available at: http://localhost:3000
API documentation is available via Swagger UI:
http://localhost:8080/api/v1/swagger-ui.html
Both the frontend and backend can be containerized and deployed together:
docker-compose up -d
The application is designed to be deployed to cloud platforms like Azure:
- Frontend: Azure Static Web Apps
- Backend: Azure App Service
- Database: Azure Database for PostgreSQL
- Storage: Azure Blob Storage
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a merge request
This project is licensed under the MIT License - see the LICENSE file for details.
- Faculty of Information Technology, Czech Technical University in Prague