Skip to content

UtkarshDubeyGIT/Next-ProjectSpace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

39 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Research Organization Template

A modern Next.js template for research organizations to showcase projects, foster community discussions, and manage content with role-based access control.

✨ Features

  • Project Showcase - Public project gallery with filtering, search, and detailed project pages
  • Community Discussions - Reddit-style discussion board with nested comments and voting
  • Role-Based Access Control - Admin, Manager, and Member roles with appropriate permissions
  • Admin Dashboard - Content management system for projects and user roles
  • Responsive Design - Modern UI with dark mode support
  • Type-Safe - Full TypeScript support with comprehensive type definitions

πŸš€ Tech Stack

  • Framework: Next.js 15.2.4 (App Router)
  • Language: TypeScript 5, React 19
  • Database & Auth: Supabase
  • Styling: Tailwind CSS 4, shadcn/ui, Aceternity UI
  • UI Libraries: Framer Motion, Lucide React, React Icons, Radix UI
  • Notifications: Sonner
  • Email: Resend (optional)
  • Deployment: Vercel (recommended)

πŸ“‹ Prerequisites

Before you begin, ensure you have:

  • Node.js 18+ installed
  • A Supabase account (sign up for free)
  • npm, yarn, pnpm, or bun package manager

πŸ› οΈ Quick Start

1. Clone the Repository

git clone <your-repo-url>
cd Next-ProjectSpace

2. Install Dependencies

npm install
# or
yarn install
# or
pnpm install

3. Set Up Environment Variables

Copy the example environment file:

cp .env.example .env.local

Fill in your Supabase credentials:

NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key

Get these from your Supabase project: Settings β†’ API

4. Set Up Database

Follow the detailed setup guide in docs/SETUP.md to:

  1. Create all required database tables
  2. Set up Row Level Security (RLS) policies
  3. Configure authentication
  4. Add yourself as an admin user

5. Run the Development Server

npm run dev
# or
yarn dev
# or
pnpm dev

Open http://localhost:3000 in your browser.

πŸ“š Documentation

πŸ—οΈ Project Structure

src/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ (withNavbar)/          # Public pages
β”‚   β”‚   β”œβ”€β”€ page.tsx           # Home page
β”‚   β”‚   β”œβ”€β”€ projects/          # Project showcase
β”‚   β”‚   β”œβ”€β”€ community/         # Discussion board
β”‚   β”‚   β”œβ”€β”€ about/             # About page
β”‚   β”‚   └── contact/           # Contact page
β”‚   β”œβ”€β”€ (withoutNavbar)/       # Auth-required pages
β”‚   β”‚   β”œβ”€β”€ login/             # Login page
β”‚   β”‚   β”œβ”€β”€ signup/            # Sign up page
β”‚   β”‚   └── dashboard/         # User dashboard
β”‚   β”‚       └── admin/         # Admin pages
β”‚   └── api/                   # API routes
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ ui/                    # shadcn/ui components
β”‚   β”œβ”€β”€ admin/                 # Admin components
β”‚   β”œβ”€β”€ community/             # Community components
β”‚   β”œβ”€β”€ dashboard/             # Dashboard widgets
β”‚   └── auth/                  # Authentication components
└── utils/
    β”œβ”€β”€ supabase/              # Supabase clients
    β”œβ”€β”€ roles.ts               # Role helpers
    β”œβ”€β”€ types.ts               # TypeScript types
    └── constants.ts           # Application constants

πŸ” User Roles

The template includes three role levels:

  • Admin - Full access to all features, can manage users and projects
  • Manager - Can create and manage projects, moderate content
  • Member - Can view projects and participate in discussions

See docs/SETUP.md for details on setting up roles.

🎯 Key Features

Projects

  • Public project showcase with filtering and search
  • Project detail pages with updates
  • Admin/Manager can create, edit, and delete projects
  • Support for research papers, software, experiments, datasets

Community

  • Discussion board with posts and nested comments
  • Voting system (upvote/downvote)
  • Category-based organization
  • Link discussions to projects

Dashboard

  • Role-based dashboard widgets
  • Project management interface
  • User role management (Admin only)
  • Statistics and analytics

πŸš€ Deployment

Deploy to Vercel

  1. Push your code to GitHub
  2. Import your repository in Vercel
  3. Add environment variables in Vercel dashboard
  4. Deploy!

See docs/DEPLOYMENT.md for detailed instructions.

πŸ”§ Development

Available Scripts

npm run dev      # Start development server
npm run build    # Build for production
npm run start    # Start production server
npm run lint     # Run ESLint

Type Safety

The project includes comprehensive TypeScript types in src/utils/types.ts. Import and use them throughout your codebase:

import { Project, DiscussionPost, UserRole } from '@/utils/types'

Constants

Application constants are centralized in src/utils/constants.ts:

import { ROLES, PROJECT_STATUS, ROUTES } from '@/utils/constants'

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

πŸ“ License

This project is open source and available under the MIT License.

πŸ†˜ Support

If you encounter any issues:

  1. Check the Setup Guide for common problems
  2. Review the API Documentation for endpoint details
  3. Open an issue on GitHub

πŸ™ Acknowledgments


Built with ❀️ for research organizations

About

A project showcase platform with built-in community discussions and announcements, designed as a reusable template for client and team applications.

Topics

Resources

Stars

Watchers

Forks

Contributors