Newgnal Backend
Backend development for a community platform supporting user content and interaction features.
Role: Designed and implemented REST APIs for posts, nested comments, likes, and reports. Integrated OAuth2, JWT, and Spring Security for authentication and authorization. Added Redis as a caching layer and standardized the team development environment with Docker Compose.

The Spring Boot backend processes requests from a React Native mobile app. The architecture consists of OAuth2 + JWT + Spring Security-based authentication, Redis/MySQL data handling, a news crawling scheduler, and an analysis service integration layer.
Design Rationale
Consolidated authentication, API, and scheduling into Spring Boot to maximize developer productivity and maintainability. Separated Redis and MySQL to handle fast access and persistent storage independently. Decoupled crawling and analysis functions for extensibility and clear separation of concerns. Used Docker Compose to standardize the runtime environment and ensure deployment reproducibility.
Well-suited for authentication, data access, exception handling, and structured server development — and the entire team was already familiar with the ecosystem.
Enables stable token-based auth implementation with seamless Spring Boot integration.
Well-suited for relational data modeling and CRUD development, with clear expression of entity relationships.
Used to reduce DB load and supplement response performance. Its in-memory nature is ideal for caching frequently accessed data.
Configured as a scheduler to decouple periodic data collection from user requests.
Adopted to reduce environment-specific errors among team members and establish a reproducible runtime baseline.
Introduced to reduce manual deployments and establish a repeatable deployment flow.
- Issue
- Same code produced different runtime results across team members' environments.
- Analysis
- The root cause was not the feature code itself, but environment mismatches — Java version, dependencies, and execution method differences.
- Solution
- Reframed Docker as a tool for standardizing the development environment, not just deployment. Used Docker Compose to define the full stack runtime in code, establishing a consistent baseline for the entire team.
- Result
- Established a standard that reduced environment-related errors, and gained a first-hand appreciation for the importance of runtime consistency in collaborative development.
⚙ Improvements
Stably implemented core community features — posts, comments, likes, and reports — and gained experience with a backend architecture beyond simple CRUD through news crawling and analysis service integration.
△ Regrets
Initially thought of Docker only as a deployment tool, which delayed leveraging it for development environment standardization and led to wasted time resolving environment-specific errors.
→ Next Steps
If the service scales, I plan to further decouple crawling, analysis, and API servers, and enhance async processing, cache strategy, and monitoring.