Skip to content

CodeWithGeorg/Academic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

99 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

AcademicFlow

A comprehensive academic service platform built with React and Appwrite, designed for managing assignments, submissions, grading, and client-administrator workflows with secure cloud storage and real-time updates.

πŸš€ Features

Authentication & Authorization

  • Secure User Authentication using Appwrite Auth
  • Role-based Access Control (RBAC)
    • Client - Can view dashboard, submit work, contact admins
    • Admin - Full system access, manage orders, view all submissions

Dashboard System

  • Client Dashboard - Track assignments, view submission status, submit work
  • Admin Dashboard - Overview of all orders, submissions, user management with analytics

Order Management

  • Create and manage academic orders/assignments
  • Track order status through workflow: Pending β†’ In Progress β†’ Revision β†’ Completed β†’ Approved
  • Attach resource files to orders
  • Set and manage deadlines

Submission System

  • File upload for assignments
  • Real-time submission tracking
  • Grade submissions with feedback
  • Status management: Submitted, Approved, Rejected, Graded

Communication

  • Contact form for public inquiries
  • Internal messaging system for authenticated users
  • Direct communication between clients and admins

Security & Storage

  • AES-256 secure file storage via Appwrite Storage
  • Role-based document permissions
  • Session management

πŸ› οΈ Tech Stack

  • Frontend: React 19.2.0
  • Build Tool: Vite 6.2.0
  • Language: TypeScript 5.8.2
  • Backend: Appwrite 21.4.0 (Self-hosted or Cloud)
  • Routing: React Router DOM 7.9.6
  • Charts: Recharts 3.5.0
  • Analytics: @vercel/analytics 1.6.1

πŸ“ Project Structure

AcademicFlow/
β”œβ”€β”€ App.tsx                    # Main app with routing configuration
β”œβ”€β”€ index.tsx                  # Entry point
β”œβ”€β”€ constants.ts               # Appwrite config & enums
β”œβ”€β”€ types.ts                   # TypeScript interfaces
β”œβ”€β”€ vite.config.ts             # Vite configuration
β”œβ”€β”€ package.json               # Dependencies
β”‚
β”œβ”€β”€ components/                # Reusable UI components
β”‚   β”œβ”€β”€ Button.tsx            # Custom button component
β”‚   β”œβ”€β”€ Footer.tsx            # Site footer
β”‚   β”œβ”€β”€ Input.tsx             # Form input component
β”‚   β”œβ”€β”€ Navbar.tsx            # Navigation bar
β”‚   β”œβ”€β”€ OrderCard.tsx         # Order display card
β”‚   └── PrivateRoute.tsx      # Route protection wrapper
β”‚
β”œβ”€β”€ context/                   # React Context providers
β”‚   └── AuthContext.tsx       # Authentication state management
β”‚
β”œβ”€β”€ layouts/                   # Page layouts
β”‚   └── MainLayout.tsx        # Main layout with Navbar/Footer
β”‚
β”œβ”€β”€ pages/                     # Application pages
β”‚   β”œβ”€β”€ Home.tsx              # Landing page
β”‚   β”œβ”€β”€ Login.tsx             # User login
β”‚   β”œβ”€β”€ Signup.tsx            # User registration
β”‚   β”œβ”€β”€ ClientDashboard.tsx   # Client view dashboard
β”‚   β”œβ”€β”€ AdminDashboard.tsx    # Admin view dashboard
β”‚   β”œβ”€β”€ PlaceOrder.tsx        # Create new order (Admin)
β”‚   β”œβ”€β”€ Contact.tsx           # Contact form (Authenticated)
β”‚   β”œβ”€β”€ ContactPublic.tsx     # Public contact page
β”‚   β”œβ”€β”€ PrivacyPolicy.tsx     # Privacy policy
β”‚   └── TermsOfService.tsx    # Terms of service
β”‚
└── services/                  # Backend services
    └── appwrite.ts           # Appwrite API calls & helpers

βš™οΈ Configuration

Environment Variables

Create a .env file in the root directory with the following variables:

VITE_APPWRITE_ENDPOINT=https://cloud.appwrite.io/v1
VITE_APPWRITE_PROJECT_ID=your-project-id
VITE_APPWRITE_DATABASE_ID=your-database-id
VITE_APPWRITE_USERS_COLLECTION_ID=your-users-collection-id
VITE_APPWRITE_ORDERS_COLLECTION_ID=your-orders-collection-id
VITE_APPWRITE_SUBMISSIONS_COLLECTION_ID=your-submissions-collection-id
VITE_APPWRITE_MESSAGES_COLLECTION_ID=your-messages-collection-id
VITE_APPWRITE_BUCKET_ID=your-storage-bucket-id

Appwrite Database Schema

Create the following collections in your Appwrite database:

  1. Users Collection

    • name (string)
    • email (string)
    • role (enum: "client", "admin")
    • createdAt (datetime)
  2. Orders Collection

    • userId (string) - Admin who created
    • title (string)
    • description (string)
    • deadline (datetime)
    • fileId (string, optional)
    • status (enum: "pending", "in-progress", "revision", "completed", "approved")
    • createdAt (datetime)
  3. Submissions Collection

    • assignmentId (string)
    • studentId (string)
    • fileId (string)
    • notes (string, optional)
    • submittedAt (datetime)
    • status (enum: "submitted", "approved", "rejected", "graded")
    • grade (string, optional)
  4. Messages Collection

    • senderId (string)
    • senderName (string)
    • subject (string)
    • content (string)
    • sentAt (datetime)

πŸš€ Getting Started

Prerequisites

  • Node.js 18+
  • npm or yarn
  • Appwrite instance (local or cloud)

Installation

  1. Clone the repository:
git clone <repository-url>
cd AcademicFlow
  1. Install dependencies:
npm install
  1. Configure environment variables (see Configuration above)

  2. Start the development server:

npm run dev
  1. Open http://localhost:5173 in your browser

Build for Production

npm run build

The build output will be in the dist directory.

πŸ“± Routes

Route Description Access
/ Home/Landing page Public
/login Login page Public
/signup Registration page Public
/privacy Privacy policy Public
/terms Terms of service Public
/contact-us Public contact form Public
/dashboard User dashboard Authenticated
/contact Internal contact form Authenticated
/admin Admin dashboard Admin only
/place-order Create new order Admin only

πŸ”’ Security Features

  • Session-based Authentication using Appwrite
  • Role-based Route Protection via PrivateRoute component
  • Document-level Permissions in Appwrite
  • Secure File Storage with Appwrite Storage
  • HTTPS enforced in production

πŸ“Š Order Status Workflow

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Pending β”‚ β†’ β”‚ In Progress β”‚ β†’ β”‚ Revision β”‚ β†’ β”‚ Completed β”‚ β†’ β”‚ Approvedβ”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Appwrite - Backend-as-a-Service platform
  • Vite - Next-generation frontend tooling
  • React - UI library

πŸ’– Support the Project

If you find this project helpful and would like to support its development, consider buying me a coffee! Your support helps keep the project alive and encourages continued development.

Buy Me A Coffee

πŸ† Sponsors

Become a sponsor and get your logo here, early access to features, and priority support!

Sponsor

Thank you for your support! πŸ™Œ

About

AcademicFlow is a web-based academic management platform for handling assignments, submissions, grading, and communication. Built with React and Appwrite, it enables role-based dashboards, secure file storage, and real-time workflow tracking.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors