β¨ Code Crafters, una empresa lΓder en el sector tecnolΓ³gico, desea implementar una plataforma web que facilite la organizaciΓ³n de eventos tanto online como presenciales dentro de la comunidad tecnolΓ³gica.
Con el rΓ‘pido avance de la tecnologΓa, la colaboraciΓ³n y el intercambio de conocimientos son mΓ‘s importantes que nunca.
Code Crafters busca crear una plataforma ΓΊnica y poderosa que satisfaga las necesidades especΓficas de la comunidad tecnolΓ³gica, promoviendo la colaboraciΓ³n, el aprendizaje continuo y la innovaciΓ³n dentro del sector.
Esta aplicaciΓ³n aspira a convertirse en el punto de encuentro virtual para profesionales, entusiastas y expertos en tecnologΓa de todo el mundo.
- Backend Development: ImplementaciΓ³n de la lΓ³gica del servidor y los endpoints RESTful.
- Database Creation: CreaciΓ³n y estructuraciΓ³n de la base de datos PostgreSQL.
- Data Access Components: Desarrollo de componentes que permiten la comunicaciΓ³n entre la API y la base de datos.
- Tests: ValidaciΓ³n del comportamiento del sistema utilizando JUnit y Mockito.
- Security: ImplementaciΓ³n de autenticaciΓ³n y autorizaciΓ³n mediante Spring Security y JWT.
- Lenguaje: Java 21
- Framework Backend: Spring Boot 3.3.5
- Seguridad: Spring Security + JWT
- Base de Datos: PostgreSQL
- Gestor de dependencias: Maven
- Testing: JUnit 5, Mockito
- Control de versiones: Git / GitHub
- Pruebas de API: Postman
- IntelliJ IDEA / Visual Studio Code
- Trello (gestiΓ³n Γ‘gil del proyecto)
- Git / GitHub
- Postman
- DBeaver o pgAdmin (gestiΓ³n de base de datos)
La API ofrece un conjunto completo de operaciones para la gestiΓ³n de eventos tecnolΓ³gicos y usuarios registrados:
- Registro de nuevos usuarios.
- Inicio y cierre de sesiΓ³n.
- ActualizaciΓ³n de perfil (nombre, correo, contraseΓ±a, imagen).
- Listado de todos los usuarios registrados.
- Crear nuevos eventos (presenciales u online).
- Listar todos los eventos.
- Buscar eventos por ID, nombre, usuario o categorΓa.
- Actualizar y eliminar eventos propios.
- PaginaciΓ³n (mΓ‘ximo 15 eventos por pΓ‘gina).
- Apuntarse a eventos.
- Desapuntarse de eventos.
- Listar los asistentes de cada evento.
- RestricciΓ³n: un usuario no puede apuntarse mΓ‘s de una vez al mismo evento.
- GeneraciΓ³n de tickets al inscribirse a un evento.
- VisualizaciΓ³n de tickets de los eventos a los que el usuario estΓ‘ apuntado.
- Usuario β Eventos (1:N): Un usuario puede crear varios eventos.
- Evento β Usuario (N:1): Cada evento pertenece a un ΓΊnico usuario.
- Usuario β Asistencia (1:N): Un usuario puede asistir a varios eventos.
- Evento β Asistencia (1:N): Un evento puede tener varios asistentes.
- El nombre del evento no puede estar vacΓo ni superar los 255 caracteres.
- La descripciΓ³n debe tener entre 50 y 2000 caracteres.
- No se puede crear un evento con una fecha anterior a la actual.
- Un usuario no puede registrarse dos veces al mismo evento.
- EliminaciΓ³n en cascada: si se elimina un usuario, tambiΓ©n se eliminan sus eventos y asistencias.
- Java 21 instalado
- PostgreSQL instalado y en ejecuciΓ³n
- Maven configurado
git clone https://github.com/CodeCrafters/CodeCrafters-Backend.git
cd CodeCrafters-BackendCREATE DATABASE codehappen;spring.datasource.url=jdbc:postgresql://localhost:5432/codehappen
spring.datasource.username=postgres
spring.datasource.password=tu_contraseΓ±a
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
jwt.secret=tu_clave_secreta
jwt.expiration=3600000Linux/Mac:
./mvnw spring-boot:runWindows:
mvnw.cmd spring-boot:runLa API estarΓ‘ disponible en: π http://localhost:8080
Se realizan pruebas unitarias con JUnit 5 y Mockito.
Para ejecutar los tests:
./mvnw testCODECRAFTERS-BACKEND/
βββ .mvn/
β βββ wrapper/
β βββ maven-wrapper.properties
β
βββ src/
β βββ main/
β β βββ java/com/code_crafters/app/
β β β βββ controller/
β β β β βββ AuthController.java
β β β β βββ UserController.java
β β β β βββ EventController.java
β β β β βββ AttendanceController.java
β β β β βββ CategoryController.java
β β β β βββ LocationController.java
β β β β
β β β βββ dto/
β β β β βββ request/
β β β β β βββ LoginRequest.java
β β β β β βββ RegisterRequest.java
β β β β β βββ UpdateUserRequest.java
β β β β β βββ AttendanceRequest.java
β β β β β βββ CategoryRequest.java
β β β β β βββ LocationRequest.java
β β β β βββ response/
β β β β βββ JwtResponse.java
β β β β βββ UserResponse.java
β β β β βββ EventResponse.java
β β β β βββ AttendanceResponse.java
β β β β βββ CategoryResponse.java
β β β β βββ LocationResponse.java
β β β β
β β β βββ entity/
β β β β βββ User.java
β β β β βββ Event.java
β β β β βββ Attendance.java
β β β β βββ Category.java
β β β β βββ Location.java
β β β β
β β β βββ exception/
β β β β βββ GlobalExceptionHandler.java
β β β β βββ ResourceNotFoundException.java
β β β β βββ BadRequestException.java
β β β β βββ UnauthorizedException.java
β β β β
β β β βββ mapper/
β β β β βββ UserMapper.java
β β β β βββ EventsMapper.java
β β β β βββ AttendanceMapper.java
β β β β βββ CategoryMapper.java
β β β β βββ LocationMapper.java
β β β β
β β β βββ repository/
β β β β βββ UserRepository.java
β β β β βββ EventRepository.java
β β β β βββ AttendanceRepository.java
β β β β βββ CategoryRepository.java
β β β β βββ LocationRepository.java
β β β β
β β β βββ security/
β β β β βββ filter/
β β β β β βββ JWTAuthentication.java
β β β β β βββ JWTAuthorization.java
β β β β βββ CustomAuthenticationManager.java
β β β β βββ SecurityConstants.java
β β β β βββ SpringConfig.java
β β β β βββ UserDetail.java
β β β β
β β β βββ seeder/
β β β β βββ DatabaseSeeder.java
β β β β
β β β βββ service/
β β β β βββ interfaces/
β β β β β βββ UserService.java
β β β β β βββ EventService.java
β β β β β βββ AttendanceService.java
β β β β β βββ CategoryService.java
β β β β β βββ LocationService.java
β β β β βββ impl/
β β β β βββ UserServiceImpl.java
β β β β βββ EventServiceImpl.java
β β β β βββ AttendanceServiceImpl.java
β β β β βββ CategoryServiceImpl.java
β β β β βββ LocationServiceImpl.java
β β β β
β β β βββ util/
β β β β βββ DateUtils.java
β β β β
β β β βββ CodeCraftersApplication.java
β β β
β β βββ resources/
β β βββ application.properties
β β
β βββ test/
β βββ java/com/code_crafters/app/
β βββ CodeCraftersApplicationTests.java
β
βββ target/
βββ .env
βββ .gitignore
βββ mvnw
βββ mvnw.cmd
βββ pom.xml
βββ README.md
El proyecto se desarrollΓ³ bajo metodologΓa Γ‘gil (Scrum) en un sprint de dos semanas, fomentando:
- β ColaboraciΓ³n del equipo
- β Mejora continua
- β Entrega incremental de valor
- Spring Boot - Framework principal
- Spring Security - AutenticaciΓ³n y autorizaciΓ³n
- JWT - Tokens de seguridad
- PostgreSQL - Base de datos
- JUnit 5 & Mockito - Testing
- Maven - GestiΓ³n de dependencias
| Nombre | GitHub | |
|---|---|---|
| Ana Aguilera | @AnaAguileraMorales88 | Ana Aguilera Morales |
| Andrea Olivera | @andreaonweb | Andrea Olivera Romero |
| Gabi Gallegos | @hgall3 | Gabriela Gallegos Anda |
| Mio Ogura | @miaryl | Mio Ogura |
| Montse MuΓ±oz | @Montc027 | Montse MuΓ±oz |
| Sofia Toro | @sofiatoroviafara01 | SofΓa Toro Viafara |
Este proyecto estΓ‘ bajo la Licencia MIT.