The Alumni Management System is a web application designed to manage alumni information, events, blogs, and executive committee members for an educational institution. The system provides functionalities for user authentication, profile management, event management, blog management, and more.
- Features
- Project Structure
- Installation
- Usage
- API Endpoints
- Environment Variables
- Contributing
- License
- User authentication and authorization
- Profile management for alumni and students
- Event creation, updating, and deletion
- Blog creation and management
- Executive committee management
- Email notifications for user verification and password reset
You can find the frontend codebase for the Alumni Management System at the following link: Alumni Management System Frontend
pkg/common
: Contains common utilities like logging and response handling.pkg/config
: Configuration management using environment variables.pkg/connection
: Database connection setup.pkg/containers
: Application container setup and server initialization.pkg/controllers
: Controllers for handling HTTP requests.pkg/domain
: Domain interfaces for repositories and services.pkg/email
: Email templates and sending functionality.pkg/middlewares
: Middleware for request validation and authentication.pkg/models
: Data models for the application.pkg/repositories
: Database interaction logic.pkg/routes
: API route definitions.pkg/serializer
: Request and response serializers and validators.pkg/services
: Business logic and service layer.images
: Directory for storing uploaded images.main.go
: Entry point of the application.go.mod
andgo.sum
: Go module dependencies.app.env
andbase.env
: Environment variable files.
- Clone the repository:
git clone https://github.com/yourusername/alumni-management-system.git
cd alumni-management-system
- Install dependencies:
go mod tidy
- Set up the environment variables:
Create a .env
file in the root directory and add the necessary environment variables. You can use app.env
and base.env
as references.
- Run the application:
go run main.go
The application provides a RESTful API for managing alumni, events, blogs, and executive committee members. You can use tools like Postman or cURL to interact with the API.
POST /v1/auth/sign-up
: Sign up a new user.POST /v1/auth/login
: Log in a user.
POST /user/forget-password
: Request a password reset.POST /user/reset-password
: Reset the password.GET /user/ping
: Ping the server.GET /user/alumni-list
: Get a list of all alumni.GET /user/:id
: Get details of a specific alumni.DELETE /user/delete-me/:id
: Delete the user's account.PATCH /user/complete-profile/:id
: Update the user's profile.
POST /v1/admin/verify-user
: Verify a user.DELETE /v1/admin/delete-user/:id
: Delete a user.
POST /v1/event/create
: Create a new event.PATCH /v1/event/update/:id
: Update an event.DELETE /v1/event/delete/:id
: Delete an event.GET /v1/event/:id
: Get details of a specific event.GET /v1/events
: Get a list of all events.
POST /v1/blog/create
: Create a new blog post.
POST /v1/executive-committee/create
: Add a new executive committee member.PATCH /v1/executive-committee/update/:id
: Update an executive committee member.DELETE /v1/executive-committee/delete/:id
: Delete an executive committee member.GET /v1/executive-committee/list
: Get a list of all executive committee members.GET /v1/executive-committee/:id
: Get details of a specific executive committee member.
The application uses environment variables for configuration. Here are the key variables:
DBUSER
: Database usernameDBPASS
: Database passwordDBIP
: Database IP address and portDBNAME
: Database namePORT
: Application portJWT_SECRET
: Secret key for JWTJWT_EXPIRE_MINUTES
: JWT expiration time in minutesSMTP_HOST
: SMTP server hostSMTP_PORT
: SMTP server portSMTP_USERNAME
: SMTP server usernameSMTP_PASSWORD
: SMTP server passwordADMIN_EMAIL
: Admin email address
Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.
This project is licensed under the MIT License. See the LICENSE file for details.