Devster is a comprehensive online community platform designed for developers and tech enthusiasts. It provides a space for developers to connect, share knowledge, find job opportunities, and collaborate on projects. The platform features various boards for different purposes including job postings, academy reviews, Q&A, and free discussions.
-
User Authentication & Authorization
- JWT-based authentication
- OAuth2 integration (Naver, Kakao)
- Social login support
- Role-based access control
-
Community Boards
- Job Board (Hire Board): Job postings and applications
- Academy Board: Educational institution reviews and ratings
- Q&A Board: Technical questions and answers
- Free Board: General discussions
- Review Board: Product and service reviews
- Notice Board: Platform announcements
-
User Management
- User profiles with customizable avatars
- Resume management system
- Company member profiles
- Messaging system between users
-
Interactive Features
- Like/Unlike posts and comments
- Bookmark functionality
- Real-time messaging
- File upload support (up to 50MB)
- Image cropping and editing
-
Advanced Features
- AWS S3 integration for file storage
- Email notifications
- SMS integration via Naver Cloud Platform
- WebSocket support for real-time communication
- Framework: Spring Boot 2.7.13
- Language: Java 11
- Database: MySQL
- ORM: JPA/Hibernate, MyBatis
- Security: Spring Security with JWT
- Build Tool: Gradle
- Container: Docker
- Framework: React 18.2.0
- State Management: Redux Toolkit
- UI Library: Material-UI (MUI)
- Routing: React Router DOM
- HTTP Client: Axios
- Real-time: WebSocket (STOMP)
- Cloud Storage: AWS S3
- OAuth Providers: Naver, Kakao
- SMS Service: Naver Cloud Platform SENS
- Translation: Naver Cloud Platform Translation
devster_final/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ ├── com/example/devsterfinal/
│ │ │ ├── data/
│ │ │ │ ├── controller/ # REST API controllers
│ │ │ │ ├── entity/ # JPA entities
│ │ │ │ ├── dto/ # Data Transfer Objects
│ │ │ │ ├── repository/ # JPA repositories
│ │ │ │ ├── service/ # Business logic
│ │ │ │ └── mapper/ # MyBatis mappers
│ │ │ ├── jwt/ # JWT configuration
│ │ │ ├── oauth2/ # OAuth2 configuration
│ │ │ ├── social/ # Social login
│ │ │ └── naver/ # Naver API integration
│ │ ├── resources/
│ │ │ ├── static/ # Built React app
│ │ │ ├── mapper/ # MyBatis XML files
│ │ │ └── application.yml # Configuration
│ │ └── reactJs/
│ │ └── my-app/ # React frontend
│ │ ├── src/
│ │ │ ├── components/ # Reusable components
│ │ │ ├── pages/ # Page components
│ │ │ ├── containers/ # Container components
│ │ │ ├── redux/ # Redux store
│ │ │ ├── router/ # Routing configuration
│ │ │ └── api/ # API calls
│ │ └── public/ # Static assets
│ └── test/ # Test files
├── build.gradle # Gradle build configuration
├── Dockerfile # Docker configuration
└── README.md # This file
- Java 11 or higher
- Node.js 18.16.0 or higher
- MySQL 5.7 or higher
- Gradle 7.x or higher
-
Clone the repository
git clone https://github.com/kwohyuno/devster_final.git cd devster_final -
Configure Database
- Create a MySQL database
- Update
src/main/resources/application.ymlwith your database credentials
-
Configure External Services
- Set up AWS S3 bucket and credentials
- Configure Naver OAuth application
- Set up Kakao OAuth application
- Configure Naver Cloud Platform services (SMS, Translation)
-
Build and Run
# Build the project ./gradlew build # Run the application ./gradlew bootRun
-
Navigate to React app directory
cd src/main/reactJs/my-app -
Install dependencies
npm install
-
Start development server
npm start
-
Build the Docker image
docker build -t devster-final . -
Run the container
docker run -p 443:443 devster-final
The application uses several configuration files:
application.yml: Main configurationapplication-oauth.properties: OAuth2 settingsnaver.properties: Naver API settingsemail.properties: Email configuration
The application runs on HTTPS (port 443) with SSL certificate. Make sure to:
- Place your SSL certificate in
src/main/resources/keystore.p12 - Update the keystore password in
application.yml
The application provides RESTful APIs for:
- User management (
/api/member/*) - Board operations (
/api/board/*) - File uploads (
/api/upload/*) - Messaging (
/api/message/*) - Authentication (
/api/auth/*)
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Hyunoh Kwon - Initial work - kwohyuno
- Spring Boot team for the excellent framework
- Material-UI team for the beautiful React components
- Naver Cloud Platform for external services
- AWS for cloud infrastructure
Devster - Connecting developers, building the future together! 🚀