A GraphQL API microservice for the International Blockchain Olympiad (IBCOL) application system. This service handles team registrations, student and advisor management, project submissions, and administrative functions.
- Team Applications: Register and manage team applications for the blockchain olympiad
- Student Management: Track student information, education records, and verification
- Advisor Management: Manage team advisors and their organizational affiliations
- Project Submissions: Handle project details, whitepapers, and presentation uploads
- Authentication: Secure access control with token-based authentication
- Admin Functions: Application review and management for administrators
- Email Integration: Verification emails and notifications via SendGrid
- Newsletter Management: Mailchimp integration for subscription management
- Node.js: JavaScript runtime
- Apollo Server: GraphQL implementation
- MongoDB: Database with Mongoose ODM
- @accounts/server: Authentication framework
- SendGrid: Email delivery service
- Mailchimp: Newsletter management
- Now/Vercel: Deployment platform
The API is organized around the following main entities:
- Application: Team registrations with associated students, advisors, and projects
- AccessToken: Authentication tokens for secure access
- AdminEmail: Administrative access control
- Various GraphQL scalar types: Date, JSON, etc.
- Node.js (v10+)
- MongoDB instance
- SendGrid API key
- Mailchimp API key (optional)
-
Clone the repository:
git clone https://github.com/ibcol/ibcol-micro-graphql-api.git cd ibcol-micro-graphql-api
-
Install dependencies:
npm install
-
Configure environment variables:
- Create a
.env
file based on the environment configurations in thenow-*.json
files - Set up MongoDB connection string, SendGrid API key, and other required variables
- Create a
-
Start the development server:
npm run local
The service is configured for deployment on Now/Vercel with multiple environment targets:
- Local:
npm run local
- Development with hot reloading - Dev:
npm run dev
- Development environment - Stage:
npm run stage
- Staging/UAT environment - Production:
npm run production
- Production environment
- Deploy to development:
npm run deploy-dev
- Deploy to staging:
npm run deploy-stage
- Deploy to production:
npm run deploy-production
For more detailed documentation, please refer to the Wiki which includes:
- IBCOL Main Website - Main IBCOL website and frontend
- IBCOL To WWW - Website deployment utilities
This project is proprietary and not licensed for public use.