A Laravel application that helps PhD students track their daily academic reading progress with a GitHub-style contribution graph.
- Secure Authentication: User registration and login system
- Article Tracking: Add articles with title, publication date, URL, and read date
- GitHub-Style Contribution Graph: Visual representation of daily reading activity
- Modern UI: Built with Flux UI components and Tailwind CSS
- Dark Mode Support: Automatic dark/light mode switching
- Responsive Design: Works on desktop, tablet, and mobile devices
- Laravel 12 - PHP framework
- Livewire 3 - Full-stack framework for Laravel
- Volt - Class-based API for Livewire
- Flux UI - Component library for Livewire
- Tailwind CSS 4 - Utility-first CSS framework
- SQLite - Database (can be easily changed to MySQL/PostgreSQL)
-
Clone the repository
git clone <repository-url> cd Articify
-
Install PHP dependencies
composer install
-
Install Node.js dependencies
npm install
-
Set up environment
cp .env.example .env php artisan key:generate
-
Run migrations
php artisan migrate
-
Build assets
npm run build
-
Start the development server
php artisan serve
- Visit
http://localhost:8000 - Register a new account or use the demo account:
- Email:
phd@example.com - Password:
password
- Email:
- Navigate to the dashboard to start tracking your reading
- Click "Add Article" on the dashboard
- Fill in the form:
- Article Title: The title of the academic paper
- Publication Date: When the article was published
- Article URL: Link to the article (DOI, journal website, etc.)
- Date Read: When you read the article
- Click "Save Article"
The contribution graph shows your reading activity over the past year:
- Gray squares: No articles read on that day
- Light green: 1 article read
- Medium green: 2-3 articles read
- Dark green: 4-5 articles read
- Very dark green: 6+ articles read
Hover over any square to see the exact date and number of articles read.
- View your recent articles in the "Recent Articles" section
- Click "View Article" to open the article URL in a new tab
- Click the trash icon to delete an article (with confirmation)
| Column | Type | Description |
|---|---|---|
id |
bigint | Primary key |
user_id |
bigint | Foreign key to users table |
title |
varchar(255) | Article title |
publication_date |
date | When the article was published |
url |
varchar(2048) | Article URL |
read_date |
date | When the user read the article |
created_at |
timestamp | Record creation time |
updated_at |
timestamp | Record update time |
Run the test suite:
php artisan testRun specific tests:
php artisan test tests/Feature/ArticleTrackingTest.phpThe project uses Laravel Pint for code formatting:
vendor/bin/pint- Create migrations for database changes
- Update models with relationships and validation
- Create Volt components for new pages
- Write tests for new functionality
- Update documentation
- Authentication: Laravel's built-in authentication system
- Authorization: Users can only access and modify their own articles
- CSRF Protection: Automatic CSRF token validation
- Input Validation: Comprehensive form validation
- SQL Injection Protection: Eloquent ORM with parameter binding
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Run the test suite
- Submit a pull request
For support, please open an issue on the GitHub repository or contact the development team.