A modern, feature-rich web application to track and manage your learning journey. Built with the latest technologies, Learning Tracker helps you organize courses, books, tutorials, and more while visualizing your progress through beautiful analytics and insights.
- π Learning Dashboard - View all your learning activities in one beautiful, organized dashboard
- β Add Learning Entries - Easily log courses, books, tutorials, videos, and more
- π Insights & Analytics - Visualize your learning progress with beautiful charts and graphs
- π Advanced Filtering - Filter and search through your learning entries with ease
- π Progress Tracking - Track weekly progress and completion status
- π Secure Authentication - NextAuth.js (Auth.js v5) with credential-based authentication
- π Password Management - Secure password reset via email with token-based verification
- π‘οΈ Two-Factor Authentication (2FA) - Enhanced security with TOTP-based 2FA using authenticator apps
- π€ Profile Management - Update your profile information and change passwords
- π Protected Routes - Middleware-based route protection for authenticated pages
- π Multi-language Support - Available in English, Arabic, and Kurdish (CKB) with full RTL support
- π¨ Modern UI - Built with shadcn/ui components and Tailwind CSS 4
- π Dark/Light Mode - Seamless theme switching with next-themes
- π± Responsive Design - Works perfectly on desktop, tablet, and mobile devices
- β‘ Fast Performance - Server-side rendering and optimized builds with Next.js 15
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- Package Manager: Bun
- Styling: Tailwind CSS 4
- UI Components: shadcn/ui
- Animations: Framer Motion
- Icons: Lucide React
- Theme Management: next-themes
- Authentication: NextAuth.js v5 (Auth.js)
- Password Hashing: bcryptjs
- Two-Factor Auth: otplib - TOTP generation
- QR Code Generation: qrcode.react
- Email Service: Resend - Password reset emails
- Database: PostgreSQL (via Neon)
- ORM: Drizzle ORM
- Data Fetching: TanStack Query (React Query)
- Form Handling: React Hook Form
- Validation: Zod
- URL State: nuqs
- i18n Framework: i18next
- React Integration: react-i18next
- Supported Languages: English, Arabic, Kurdish (CKB)
- Bun (v1.0 or higher) - Install Bun
- Node.js (v18 or higher) - Install Node.js
-
Clone the repository
git clone https://github.com/Ahmad-Softwaree/learning_tracker.git cd learning_tracker -
Install dependencies
bun install
-
Set up environment variables
# Create a .env file in the root directory # Add your environment variables (see .env.example)
-
Run the development server
bun dev
-
Open your browser Navigate to http://localhost:3000
learning_tracker/
βββ app/ # Next.js app directory
β βββ globals.css # Global styles with Tailwind CSS 4
β βββ layout.tsx # Root layout
β βββ page.tsx # Home page
β βββ providers.tsx # Context providers
βββ components/ # React components
β βββ layouts/ # Layout components (Header, Footer)
β βββ sections/ # Page sections (Hero, Features, etc.)
β βββ shared/ # Shared/reusable components
β βββ ui/ # shadcn/ui components
βββ i18n/ # Internationalization
β βββ locales/ # Translation files (en, ar, ckb)
β βββ i18n.ts # i18next configuration
βββ lib/ # Utility functions and configs
βββ hooks/ # Custom React hooks
βββ types/ # TypeScript type definitions
βββ public/ # Static assets
- Secure Login/Logout - Credential-based authentication with session management
- User Registration - Create new accounts with email and password
- Session Handling - Persistent sessions with automatic refresh
- Password Reset - Email-based password reset with secure tokens
- Token Expiration - Reset tokens expire after 1 hour for security
- Change Password - Authenticated users can update their passwords
- Password Validation - Strong password requirements with confirmation
- TOTP-Based 2FA - Time-based One-Time Password using authenticator apps
- QR Code Setup - Easy setup by scanning QR code with Google Authenticator, Authy, etc.
- OTP Verification - 6-digit code verification during setup and login
- Login with 2FA - Additional security layer for users with 2FA enabled
- Enable/Disable - Users can manage 2FA settings from their profile
- Update Profile - Change name and email address
- Profile Security - Password confirmation required for sensitive changes
- 2FA Settings Card - Dedicated UI for managing two-factor authentication
Learning Tracker supports three languages:
- English (en) - Left-to-right (LTR)
- Arabic (ar) - Right-to-left (RTL)
- Kurdish (ckb) - Right-to-left (RTL)
All UI text, including authentication flows and error messages, is fully internationalized and can be easily extended with additional languages.
The project uses a modern teal/cyan color scheme defined in globals.css. You can customize the colors by modifying the CSS variables in the :root and .dark selectors.
Follow the component organization guidelines in docs/component-organization.md.
- Component Organization
- UI Components
- Authentication - NextAuth.js setup, 2FA, password reset
- Internationalization
- Theme & Dark Mode
- Motion & Animations
- URL Parameters
- Package Management
- Folder & File Conventions
Contributions are welcome! Please read the AGENTS.md file for coding standards and architecture patterns.
This project is licensed under the MIT License.
Ahmad Softwaree
- GitHub: @Ahmad-Softwaree
- Portfolio: ahmad-software.com
- Built with Next.js
- UI components from shadcn/ui
- Icons from Lucide
- Animations powered by Framer Motion