·
20 commits
to release/v1.3.1
since this release
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
1.3.1 - 2025-07-24
🚀 Initial Release
This is the first stable release of Alignify Backend - a comprehensive platform connecting social network influencers and brands.
✨ Features
Brand Management
- Campaign Management: Create, update, and manage marketing campaigns
- Influencer Invitations: Send direct collaboration invitations to influencers
- Progress Review: Review and approve influencer progress during collaborations
- Campaign Status Management: Handle campaign lifecycle (
DRAFT→RECRUITING→PENDING→PARTICIPATING→COMPLETED)
Influencer Features
- Content Creation: Post content and ideas to showcase creative work
- Campaign Applications: Apply to participate in brand campaigns
- Invitation Management: Accept or decline direct brand invitations
- Progress Updates: Update and track collaboration progress
Admin Capabilities
- User Management: Moderate users, handle bans and permission restrictions
- Content Moderation: Manage and delete posts and campaigns
- Report Handling: Process user reports and complaints
- Upgrade Packages: Create and manage account upgrade packages
Communication & Interaction
- Real-time Chat: WebSocket-based group chat for brand-influencer collaboration
- Social Interactions: Like and comment system for influencer posts
- Notifications: Real-time notification system
Payment Integration
- PayOS Integration: Vietnamese payment gateway support
- PayPal Integration: International payment processing
- QR Code Generation: Payment QR codes for transactions
🛠️ Technical Features
Core Technologies
- Java 21 with Spring Boot 3.4.5
- MongoDB for flexible data storage
- JWT Authentication for secure user sessions
- Spring Security for comprehensive security
- WebSocket (STOMP) for real-time features
Third-Party Integrations
- Cloudinary: Media storage and management
- Gmail SMTP: Email notifications
- Google OAuth: Social authentication
- Gemini AI: AI-powered features and recommendations
- RapidAPI: External API integrations
API & Documentation
- RESTful API design with consistent response format
- Swagger UI for comprehensive API documentation
- Versioned APIs at
/api/v1/ - Rate Limiting and security best practices
Infrastructure
- Docker support for containerized deployment
- Maven build system
- Environment-based configuration
- Production-ready deployment on Render.com
🔧 System Requirements
- Java 21 or higher
- MongoDB 4.4 or higher
- Maven 3.6 or higher
🌐 Deployment
- Backend: https://alignify-backend.onrender.com
- API Documentation: https://alignify-backend.onrender.com/swagger-ui
- Frontend: https://alignify-rose.vercel.app
📋 Release Notes
- This is the foundational release providing all core functionality for the Alignify platform
- Comprehensive API coverage for all user roles (Admin, Brand, Influencer)
- Production-ready deployment with proper security and monitoring
- Full documentation and development guidelines included
What's Changed
- <feat/authService>: add authService after filter-repo by @khovan123 in #86
- <feat/UI>: create UI for message in mail by @khovan123 in #87
- <fix/UI>: fix can not send email and update UI in email by @khovan123 in #93
- : update deployed file by @khovan123 in #97
- <feat/middleware>: add except paths for authorize, add JWTAuthFilter and SecurityChain to pass public endpoints by @khovan123 in #98
- <feat/middleware>: add except paths for authorize, add JWTAuthFilter and SecurityChain to pass public endpoints by @khovan123 in #100
- : delete build folder by @khovan123 in #101
- <feat/campaign>: create CRUD for campaign by @NgocThien2805 in #94
- : replace some body, param with dto class by @khovan123 in #102
- <fix/request>: set roleId for use by @khovan123 in #103
- <config/mongo>: change type in influencer model by @khovan123 in #104
- <fix/security>: accept login via google api and turn off csrf by @khovan123 in #105
- <fix/security>: store userdetails for verify user by @khovan123 in #106
- <feat/security>: using AuthenticationPrincipal by @khovan123 in #107
- <feat/mapper>: add object mapper for request in RequestBody by @khovan123 in #108
- : add JSONProperty for request-class by @khovan123 in #109
- <feat/contentPosting-comment>: create CRUD for comment by @NgocThien2805 in #99
- : upload jar file by @khovan123 in #110
- <feat/application>: design API for [campaign application] by @khovan123 in #111
- <feat/campaign-tracking>: design API for [campaign tracking] by @khovan123 in #112
- <refactor/structure>: move to correct package by @khovan123 in #113
- : conflict merge by @khovan123 in #114
- : conflict merge by @khovan123 in #115
- : update common endpoints by @khovan123 in #116
- : add jar file by @khovan123 in #117
- : security config -- wrong endpoint by @khovan123 in #118
- <feat/campaign>: update campaign model by @NgocThien2805 in #119
- <chore/attribute>: remove isPublic in campaign by @khovan123 in #120
- <feat/Pre-auth>: add authorities by @khovan123 in #122
- <feat/campaign-tracking>: update model for add content requirement in campainTracking by @khovan123 in #123
- : logic in campaing to tracking by @khovan123 in #124
- <feat/mutipartFile>: upload list part for upload image by @khovan123 in #125
- <feat/chatting>: set up websocket for chatting, add ChatRoom, ChatMessage model and update services related by @nhibao08 in #126
- <fix/request>: change body type in create campaign feature by @khovan123 in #127
- <fix/campaign>: update campaign model and mongo config by @NgocThien2805 in #128
- : config timezone<fix/campaign>: update campaign model and mongo config by @khovan123 in #129
- : release/v1.2 by @khovan123 in #130
- <chore/res>: add more infor to current res in Auth, Chat by @khovan123 in #131
- <feat/chatting>: system message by @khovan123 in #132
- <fix/campaign>: update service by @NgocThien2805 in #133
- : up to date --version by @khovan123 in #134
- <fix/contentPosting>: fix response of ContetnPosting suit with UI by @NgocThien2805 in #135
- : up to date --v1.2.2 by @khovan123 in #136
- : compile file build by @khovan123 in #137
- <fix/campaignPosting>: request part and parse obj in campaign by @khovan123 in #138
- <fix/campaign>: update model and response data by @NgocThien2805 in #139
- <fix/campaign>: config mongoDB by @NgocThien2805 in #140
- <feat/trigger-profile>: auto create profile if not existed by @khovan123 in #141
- <fix/updated>: update find by status in campaign by @khovan123 in #142
- <feat/campaign>: add some condition in update campaign by @khovan123 in #143
- : update application response by @khovan123 in #144
- <fix/campaign>: two-check application by @khovan123 in #145
- <fix/campaign>: two-check application by @khovan123 in #146
- <fix/application>: two-check campaign and application by @khovan123 in #147
- <feat/filter-category>: filter for campaign by category by @NgocThien2805 in #148
- : change response type by @khovan123 in #149
- : change password by @khovan123 in #150
- <feat/sort>: sort room by createdAt~~accessAt by @khovan123 in #151
- : build campagin model by @khovan123 in #152
- <feat/filter by top>: create function GetCampaignTop in campaignService by @NgocThien2805 in #153
- <feat/filter by top>: create getTopInfluencer in ProfileService by @NgocThien2805 in #154
- <feat/notify>: set up notification by @khovan123 in #155
- <feat/searching>: search by criteria by @DThuyInk in #156
- <feat/notification>: create rest controller for loading history and websocket for notify feature by @khovan123 in #157
- <feat/application>: confirm application by @khovan123 in #158
- <feat/UpdateProfile>: fix update dob for influencer by @NgocThien2805 in #159
- <fix/format>: serialize date by @khovan123 in #160
- <feat/converter>: auto convert for mongodb read and write by @khovan123 in #161
- <feat/converter>: auto convert for mongodb read and write by @khovan123 in #162
- <fix/config>: config zoned date time by @khovan123 in #163
- <fix/config>: delete @Createdate by @khovan123 in #164
- <fix/campaign>: return all campaign, delete pageable by @khovan123 in #165
- <feat/like-act>: toggle like to count line and check isLiked in content posting by @khovan123 in #166
- : add deployed file by @khovan123 in #167
- <feat/comment>: apply websocket for comment in content-posting by @nhibao08 in #168
- <feat/chatRoom>: create room when change status by @khovan123 in #169
- Feat/Profile: fix function updateProfile by @NgocThien2805 in #170
- <fix/chatRoom>: fix query in repository by @khovan123 in #171
- <fix/flow>: ensure existed chatRoom and return correct data in application by influencer by @khovan123 in #172
- <fix/forum>: two-check comment and like by @khovan123 in #173
- <fix/comment>: return commentCount in res by @khovan123 in #174
- Feat/filter: filter category for contentPosting by @NgocThien2805 in #175
- <feat/socialMedia>: get followers from ins,fb,yt,tiktok by @khovan123 in #176
- <feat/format>: format subcriber or follower by @khovan123 in #177
- Feat/filter category: filter by category for forum, brand and influencer by @NgocThien2805 in #178
- fix/updateProfile: add default constructor for class contact by @NgocThien2805 in #179
- <fix/campaignTracking>: create campaignTracking after confirm application by @khovan123 in #180
- <feat/application>: fix auto generate campaignTracking when confirm by @khovan123 in #181
- <fix/admin>: create new account with role admin by @khovan123 in #182
- <feat/user-mangemet>: ban, unband, get --users for admin role by @khovan123 in #183
- <chore/mongo>: disable auto reset schema & data by @khovan123 in #184
- <chore/admin>: delete unused file by @khovan123 in #185
- <feat/permisson>: set up permisson for action[post, comment,..] and plan sucriptions by @khovan123 in #186
- <feat/permission>: add/remove permission for user by @khovan123 in #187
- <feat/ban>: ban account with reason and restrict permisson by @khovan123 in #188
- <chore/copilot-instruction>: set up copilot for repository by @khovan123 in #190
- <feat/invitation>: handle invitations of brands from influencers by @khovan123 in #189
- <chore/copilot instruction>: update instructions for copilot by @khovan123 in #191
- <feat/gemini>: using gemini to recommend campaigns and influencers by @khovan123 in #192
- : add user-friendly error page with Thymeleaf template for Spring Boot application by @Copilot in #195
- <feat/geminiApi>: recommend data in campaigns, influencers by @khovan123 in #196
- <perf/query>: improve query in select profile by @khovan123 in #197
- <perf/query>: fix conflict by @khovan123 in #198
- <fix/campaign>: sort campaign by createdAt by @khovan123 in #199
- <chore/gitignore>: update gitignore by @khovan123 in #200
- <feat/search>: improve and correct query by @DThuyInk in #201
- <fix/lfs>: fix git lfs by @khovan123 in #202
- Feat/statistics by @DThuyInk in #203
- <fix/delete>: allow admin delete by @khovan123 in #206
- : release/v1.3.1 by @khovan123 in #204
- <fix/campaign>: delete all invitation when delete campaign by @khovan123 in #207
- <feat/cloud>: store pdf file by @khovan123 in #208
- <feat/contract>: upload contract in campaign by @khovan123 in #209
- <feat/upgrade-plan>: create plan by @khovan123 in #205
- <feat/ugrade account>: update requestb for payOS by @NgocThien2805 in #212
- <feat/campaignTracking>: update dto request and method update post url by @khovan123 in #211
- Feat/ugrade account: update class planService by @NgocThien2805 in #213
- <feat/campaignTracking>: comfirm tracking in brand by @khovan123 in #215
- <fix/campaignTracking>: fix move to completed status by @khovan123 in #216
- <feat/2fa>: supported 2fa for login by @khovan123 in #217
- <feat/setting>: completed account setting endpoint by @khovan123 in #218
New Contributors
- @NgocThien2805 made their first contribution in #94
- @Copilot made their first contribution in #195
Full Changelog: https://github.com/khovan123/alignify-backend/commits/v1.3.1