Skip to content

abdullah-dev5/gradaccelerate-project-x

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

19 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

GradAccelerate Project

A modern full-stack productivity application built with AdonisJS, React, and Inertia.js. Manage your notes, projects, bookmarks, todos, and reminders all in one place with AI-powered features and real-time updates.

πŸš€ Features

Core Features

  • πŸ“ Notes Management: Create, edit, and organize your notes with Markdown support and syntax highlighting
  • πŸ“ Project Tracking: Organize projects and associate notes, todos, and bookmarks with them
  • πŸ”– Bookmarks: Save and manage bookmarks with automatic metadata extraction
    • AI-generated labels and summaries using Google Gemini
    • Automatic Open Graph data extraction
    • Favorite bookmarks
    • Archive and trash functionality
  • βœ… Todo Management: Create and track todos with status management
  • ⏰ Reminders: Set reminders for important tasks and deadlines
  • 🏷️ Labels: Organize content with custom labels and color coding
  • πŸ” Advanced Search & Filter: Search across all content with multiple filter options
  • πŸ‘€ User Preferences: Customize your experience with user-specific settings
  • 🌀️ Weather Integration: Weather information integration
  • πŸ‘¨β€πŸ’Ό Admin Panel: Administrative features for user and content management

Technical Features

  • Real-time Updates: Live notifications and updates using Pusher
  • User Authentication: Secure authentication with Google OAuth
  • AI Integration: Google Gemini AI for intelligent content analysis
  • Image Upload: Cloudinary integration for image management
  • Beautiful UI: Modern, responsive design with TailwindCSS and Radix UI components
  • Markdown Support: Rich text editing with Markdown rendering
  • Syntax Highlighting: Code syntax highlighting in notes

πŸ› οΈ Tech Stack

Backend

  • Framework: AdonisJS 6
  • Database: SQLite (better-sqlite3)
  • ORM: Lucid ORM
  • Authentication: AdonisJS Auth with Google OAuth (Ally)
  • Validation: VineJS
  • Real-time: Pusher
  • AI: Google Gemini API
  • Email: SendGrid / Nodemailer
  • File Storage: Cloudinary
  • Error Tracking: Sentry

Frontend

  • Framework: React 18 with TypeScript
  • Routing: Inertia.js
  • Styling: TailwindCSS
  • UI Components: Radix UI
  • Icons: Lucide React
  • Animations: Framer Motion
  • State Management: Zustand
  • Markdown: React Markdown with syntax highlighting
  • HTTP Client: Axios

Development & Testing

  • Build Tool: Vite
  • Testing: Jest (Frontend), Japa (Backend), Cypress (E2E)
  • Linting: ESLint
  • Type Checking: TypeScript
  • CI/CD: GitHub Actions
  • Deployment: Railway

πŸ“¦ Installation

# Clone the repository
git clone https://github.com/abdullah-dev5/gradaccelerate-project-x.git

# Navigate to the project
cd gradaccelerate-project-x

# Install dependencies
npm install

# Copy environment file
cp .env.example .env

# Generate app key
node ace generate:key

# Run migrations
node ace migration:run

# Start development server
npm run dev

πŸ§ͺ Testing

# Run all tests (frontend + backend)
npm test

# Frontend tests only
npm run test:frontend

# Backend tests only
npm run test:backend

# Specific test suites
npm run test:unit          # Unit tests
npm run test:controllers   # Controller tests
npm run test:models        # Model tests
npm run test:services      # Service tests
npm run test:validators    # Validator tests
npm run test:middleware    # Middleware tests
npm run test:oauth         # OAuth tests

# E2E tests
npm run test:e2e           # Run Cypress tests
npm run test:e2e:open      # Open Cypress UI
npm run test:e2e:headless  # Run headless

# With coverage (50% threshold required)
npm run test:coverage

# Run all tests including E2E
npm run test:all-with-e2e

πŸ—οΈ Building for Production

# Build the application (ignores TypeScript errors)
npm run build

# Start production server
npm run start

# Build for deployment (same as build)
npm run build:deploy

The build process compiles TypeScript, bundles frontend assets with Vite, and creates optimized production artifacts in the build/ directory.

πŸ”§ Configuration

Environment Variables

Create a .env file in the root directory. You can copy from .env.example if available:

# Application
NODE_ENV=development
PORT=3333
APP_KEY=your-secret-key  # Generate with: node ace generate:key
HOST=localhost
LOG_LEVEL=info
SESSION_DRIVER=cookie

# Database
DB_CONNECTION=sqlite
DB_DATABASE=./database/app.sqlite

# Google OAuth (Required for authentication)
GOOGLE_CLIENT_ID=your-client-id
GOOGLE_CLIENT_SECRET=your-client-secret
GOOGLE_REDIRECT_URI=http://localhost:3333/auth/google/callback

# Google Gemini AI (Optional - for AI features in bookmarks)
GOOGLE_GEMINI_API_KEY=your-gemini-api-key

# Cloudinary (Optional - for image uploads)
CLOUDINARY_CLOUD_NAME=your-cloud-name
CLOUDINARY_API_KEY=your-api-key
CLOUDINARY_API_SECRET=your-api-secret

# Pusher (Optional - for real-time features)
PUSHER_APP_ID=your-app-id
PUSHER_APP_KEY=your-app-key
PUSHER_APP_SECRET=your-app-secret
PUSHER_CLUSTER=your-cluster

# Sentry (Optional - for error tracking)
SENTRY_DSN=your-sentry-dsn

# Email (Optional - SendGrid or SMTP)
# SendGrid
SENDGRID_API_KEY=your-sendgrid-api-key

# OR SMTP
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=your-email@example.com
SMTP_PASS=your-password

Setting up Google OAuth

  1. Go to Google Cloud Console
  2. Create a new project or select an existing one
  3. Enable Google+ API
  4. Create OAuth 2.0 credentials
  5. Add authorized redirect URI: http://localhost:3333/auth/google/callback
  6. Copy Client ID and Client Secret to your .env file

πŸ“ Project Structure

gradaccelerate-project-x/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ controllers/        # Route controllers (auth, notes, projects, bookmarks, etc.)
β”‚   β”œβ”€β”€ models/            # Database models (User, Note, Project, Bookmark, Todo, etc.)
β”‚   β”œβ”€β”€ services/          # Business logic services
β”‚   β”œβ”€β”€ middleware/        # Custom middleware
β”‚   β”œβ”€β”€ validators/        # Request validators
β”‚   β”œβ”€β”€ policies/          # Authorization policies
β”‚   β”œβ”€β”€ abilities/         # Permission abilities
β”‚   β”œβ”€β”€ exceptions/        # Custom exceptions
β”‚   β”œβ”€β”€ events/            # Event definitions
β”‚   β”œβ”€β”€ listeners/         # Event listeners
β”‚   └── mails/             # Email templates
β”œβ”€β”€ database/
β”‚   β”œβ”€β”€ migrations/        # Database migrations
β”‚   └── seeders/           # Database seeders
β”œβ”€β”€ inertia/
β”‚   β”œβ”€β”€ pages/             # React page components
β”‚   β”œβ”€β”€ components/        # Reusable React components
β”‚   β”œβ”€β”€ hooks/             # Custom React hooks
β”‚   └── layouts/           # Layout components
β”œβ”€β”€ resources/
β”‚   β”œβ”€β”€ css/               # Global styles
β”‚   └── js/                # Entry point
β”œβ”€β”€ tests/
β”‚   β”œβ”€β”€ unit/              # Unit tests
β”‚   β”œβ”€β”€ functional/        # Functional tests
β”‚   β”œβ”€β”€ controllers/       # Controller tests
β”‚   β”œβ”€β”€ models/            # Model tests
β”‚   β”œβ”€β”€ services/          # Service tests
β”‚   └── validators/        # Validator tests
β”œβ”€β”€ public/                # Static assets
β”œβ”€β”€ config/                # Configuration files
β”œβ”€β”€ start/                 # Application startup files
β”œβ”€β”€ .github/               # CI/CD workflows
└── cypress/               # E2E test files

πŸš€ Deployment

The application is deployed on Railway. The deployment is automatically triggered on push to the main branch.

Railway Configuration

The project uses railway.toml for deployment configuration:

[build]
buildCommand = "npm run build"

[deploy]
startCommand = "node build/bin/server.js"

Deployment Steps

  1. Connect your GitHub repository to Railway
  2. Configure environment variables in Railway dashboard
  3. Railway will automatically build and deploy on push to main branch
  4. The application will be available at your Railway-provided URL

CI/CD Pipeline

The project uses GitHub Actions for continuous integration. See .github/CICD_README.md for detailed information about the pipeline.

Pipeline includes:

  • βœ… Code linting
  • βœ… Type checking
  • βœ… Frontend tests (Jest)
  • βœ… Backend tests (Japa)
  • βœ… E2E tests (Cypress) - on release branches and main
  • βœ… Build verification
  • βœ… Automatic deployment to Railway

πŸ“š Available Scripts

# Development
npm run dev              # Start development server with HMR
npm run start            # Start production server

# Building
npm run build            # Build for production
npm run build:deploy     # Build for deployment

# Code Quality
npm run lint             # Run ESLint
npm run fix              # Fix ESLint issues automatically
npm run typecheck        # Check TypeScript types

# Testing
npm test                 # Run all tests
npm run test:frontend    # Frontend tests only
npm run test:backend     # Backend tests only
npm run test:coverage    # Tests with coverage report
npm run test:e2e         # E2E tests with Cypress

🀝 Contributing

We welcome contributions! Please follow these steps:

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Make your changes
  4. Run tests and ensure they pass (npm test)
  5. Run linting and fix any issues (npm run lint)
  6. Commit your changes (git commit -m 'Add some AmazingFeature')
  7. Push to the branch (git push origin feature/AmazingFeature)
  8. Open a Pull Request

Development Guidelines

  • Follow the existing code style
  • Write tests for new features
  • Ensure all tests pass before submitting PR
  • Update documentation if needed
  • Keep commits atomic and well-described

πŸ“ License

This project is licensed under the MIT License.

πŸ‘₯ Authors

  • Abdullah

πŸ™ Acknowledgments

  • AdonisJS Team
  • Inertia.js Contributors
  • React Team
  • TailwindCSS Team

About

The App is currently unavailable due to expiration oif free trail at railway.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 94.1%
  • Edge 2.9%
  • JavaScript 1.5%
  • Other 1.5%