Computational Intelligence, Innovation & Performance
University of Jinan - Key Laboratory of Intelligent Computing Technology
A modern, full-stack research lab website built with Next.js 15, TypeScript, and Prisma. Features comprehensive content management, authentication, and resource booking systems.
- Homepage: Video hero section with lab metrics, featured research, and team showcase
- Research Publications: Searchable database with filters, citations, and PDF downloads
- Projects: Active and completed projects with team member integration
- News & Updates: Blog-style news feed with categories and tags
- Team Directory: Researcher profiles with publications and project listings
- Resource Booking: Lab equipment and facility reservation system
- Admin Dashboard: Full CRUD operations for all content types
- Rich Text Editor: Markdown-based content editing with preview
- File Management: Secure file uploads with validation
- Featured Content: Pin and feature important publications/projects
- View Tracking: Automatic analytics for papers, projects, and news
- Authentication: JWT-based auth with role-based access control (SUPER_ADMIN, RESEARCHER, STUDENT, GUEST)
- Database: PostgreSQL with Prisma ORM
- API Routes: RESTful APIs with proper error handling and validation
- Responsive Design: Mobile-first, fully responsive UI with Tailwind CSS
- Type Safety: Full TypeScript coverage with strict mode
- Performance: Server-side rendering, static generation, and optimized images
- Framework: Next.js 15 (App Router)
- Language: TypeScript 5
- Database: PostgreSQL with Prisma ORM
- Styling: Tailwind CSS + shadcn/ui components
- Authentication: JWT with bcrypt password hashing
- Forms: React Hook Form + Zod validation
- Rich Text: Custom Markdown editor with live preview
- Animations: Framer Motion
- Icons: Lucide React
ci2p/
βββ app/ # Next.js App Router
β βββ (main)/ # Main public routes
β βββ (auth)/ # Authentication routes (login, register)
β βββ (public)/ # Public content routes
β βββ api/ # API routes
β β βββ auth/ # Authentication endpoints
β β βββ papers/ # Publications CRUD
β β βββ projects/ # Projects CRUD
β β βββ news/ # News CRUD
β β βββ resources/ # Resource booking system
β β βββ ...
β βββ layout.tsx # Root layout
βββ components/ # React components
β βββ layout/ # Navigation, footer, etc.
β βββ sections/ # Homepage sections
β βββ editor/ # Rich text editor
β βββ ui/ # shadcn/ui components
βββ lib/ # Utility functions
β βββ auth.ts # JWT utilities
β βββ prisma.ts # Prisma client
β βββ utils.ts # Helpers
βββ prisma/ # Database schema and migrations
β βββ schema.prisma # Database models
β βββ seed.ts # Seed data
βββ types/ # TypeScript type definitions
- Node.js 18.x or higher
- PostgreSQL 14.x or higher
- npm/yarn/pnpm
- Clone the repository
git clone https://github.com/Hetawk/ci2p.git
cd ci2p- Install dependencies
npm install- Set up environment variables
cp .env.example .envEdit .env with your database and JWT secret:
DATABASE_URL="postgresql://user:password@localhost:5432/ci2p"
JWT_SECRET="your-secret-key-here"- Set up the database
# Run migrations
npx prisma migrate dev
# Seed initial data (optional)
npx prisma db seed- Run the development server
npm run devOpen http://localhost:3000 to view the site.
After running the seed script, you can login with the credentials configured in your .env file:
- Email:
your-admin-email@example.com - Password: Set via
SEED_PASSWORDenvironment variable
POST /api/auth/register- Register new userPOST /api/auth/login- Login and get JWT tokenPOST /api/auth/verify-email- Verify email addressPOST /api/auth/forgot-password- Request password resetPOST /api/auth/reset-password- Reset password with tokenGET /api/auth/me- Get current user profile
GET /api/papers- List publications (with filters)POST /api/papers- Create publication (admin)GET /api/papers/[id]- Get single publicationPUT /api/papers/[id]- Update publication (admin)DELETE /api/papers/[id]- Delete publication (admin)PATCH /api/papers/[id]- Toggle featured/published status (admin)
GET /api/projects- List projectsPOST /api/projects- Create project (admin)GET /api/projects/[id]- Get project detailsPUT /api/projects/[id]- Update project (admin)DELETE /api/projects/[id]- Delete project (admin)
GET /api/resources- List available resourcesPOST /api/resources- Create resource (admin)GET /api/resources/bookings- List bookings (filtered by user)POST /api/resources/bookings- Create booking requestPATCH /api/resources/bookings/[id]- Approve/reject booking (admin)
Full API documentation available in /zdir/API_Documentation.md
- SUPER_ADMIN: Full system access, user management
- RESEARCHER: Create/edit own content, view analytics
- STUDENT: Limited content creation, resource booking
- GUEST: View public content only
- User Registration: Prospective researchers/students submit registration form with personal information
- Admin Review: Registration requests appear in admin dashboard for approval
- Approval & Account Creation: Admin/Super Admin reviews and approves, system generates temporary password
- First Login: User receives temporary credentials and must change password on first login
- Access Granted: User can now access system with their chosen secure password
This ensures proper vetting of all lab members and maintains security standards.
- Push to GitHub
- Import project in Vercel
- Add environment variables
- Deploy
docker build -t ci2p .
docker run -p 3000:3000 ci2p- β Fixed all Next.js 15 async params errors
- β Fixed auth API schema mismatches
- β Implemented Resources & Bookings API system
- β Added conflict detection for bookings
- β Admin approval workflow for reservations
- β Resolved routing conflicts
- β Zero TypeScript compilation errors
- β Papers detail page with view tracking
- β Projects detail page with member integration
- β News detail page with related posts
- β Full CRUD APIs for all content types
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is proprietary software for CI2P Research Lab.
CI2P Research Lab
Prof. Sijie Niu - Lab Director
School of Information Science and Engineering
University of Jinan
No. 336 West Road of Nan Xinzhuang
Jinan, Shandong 250022, China
π§ Email: sjniu@hotmail.com | ise_niusj@ujn.edu.cn
π Phone: 0531-82767569
π¬ Google Scholar: Prof. Sijie Niu
π ORCID: 0000-0002-1401-9859
Built with β€οΈ by the CI2P Development Team




