A web application for tracking and visualizing your reading habits using Goodreads export data. This tool allows you to upload your Goodreads library export CSV and provides insightful visualizations and statistics about your reading history.
- Direct Goodreads CSV Import: Simply upload your Goodreads library export to get started
- Comprehensive Dashboard: View an overview of your reading habits at a glance
- Reading Progress Tracking: Track your progress toward yearly and monthly reading goals
- Detailed Visualizations: Analyze your reading patterns with interactive charts and graphs
- Author Statistics: Discover your most-read authors and genres
- Reading Pace Analysis: Monitor your reading speed and patterns over time
- Responsive Design: Works seamlessly on desktop and mobile devices
- Log in to your Goodreads account
- Navigate to My Books
- Click on Import and Export (bottom left sidebar)
- Select Export Library
- Download the generated CSV file
- Upload it to the Reading Habit Tracker
- Frontend: React, React Router, Recharts
- Backend: Node.js, Express
- Data Processing: CSV Parser, Day.js
- Styling: Custom CSS
- Node.js (v14 or higher)
- npm or yarn
- ImageMagick (provides the
convertcommand used bygenerate_favicons.sh)
To generate application favicons place your source image in client/public and run ./generate_favicons.sh.
# Clone the repository
git clone https://github.com/hexawulf/reading-habit-tracker.git
cd reading-habit-tracker
# Install server dependencies
npm install
# Install client dependencies
cd client
npm install
cd ..
# Create an uploads directory
mkdir uploads
cp .env.example .env
# Edit .env and add your secrets
🏃 Running the Application
bash
Copy
Edit
# Start the backend
npm run dev
# Start the frontend
npm run client
Then open your browser and navigate to: http://localhost:3000🌐 Deployment This app can be deployed to Heroku, Vercel, or Netlify.
🚀 Heroku Deployment bash Copy Edit heroku login heroku create reading-habit-tracker git push heroku main 🌱 Environment Variables Variable Description PORT Port on which the server runs (default: 5000) NODE_ENV Environment mode (development/production)
📁 Project Structure pgsql Copy Edit ├── client/ │ ├── public/ │ └── src/ │ ├── components/ │ ├── context/ │ ├── pages/ │ ├── utils/ │ ├── App.js │ └── index.js ├── server.js ├── utils/ │ └── goodreadsParser.js ├── uploads/ ├── package.json └── README.md 📡 API Endpoints POST /api/upload – Upload a Goodreads CSV
GET /api/stats – Get generated reading stats
🤝 Contributing Fork the repo
Create a branch (git checkout -b feature/my-feature)
Commit your changes (git commit -m 'Add feature')
Push to GitHub (git push origin feature/my-feature)
Open a Pull Request
📜 License MIT License – see the LICENSE file for details.
🙏 Acknowledgments Goodreads for export tools
Open-source devs who make great libraries
You — the reader, the tracker, the book lover!
🔮 Roadmap Reading challenges
Open Library API integration
Book recommendations
User accounts & data sync
Dark mode
Social sharing
Friend stats comparison
Run npm audit regularly or schedule it in your CI or a cron job to catch vulnerable dependencies.
📬 Contact 0xWulf 📧 dev@0xWulf.dev
GitHub Project: https://github.com/hexawulf/reading-habit-tracker