A beautiful and intuitive time tracking application that integrates with Notion to help you log and visualize your work hours. Perfect for freelancers, remote workers, and anyone who wants to keep track of their productivity.
- π Calendar View: Visual calendar showing logged hours for each day
- π Week View: Detailed weekly breakdown with daily summaries
- π Statistics: Comprehensive analytics with project breakdowns and trends
- π Notion Integration: Seamlessly sync your time entries to a Notion database
- πΎ Local Storage: Your data is saved locally even without Notion setup
- π± Responsive Design: Works beautifully on desktop, tablet, and mobile
- π¨ Modern UI: Clean, professional interface built with Tailwind CSS
- Node.js 18+
- npm or yarn
- A Notion account (for integration)
-
Clone or download the project
git clone <repository-url> cd notion-work-scheduler
-
Install dependencies
npm install
-
Start the development servers
In one terminal (frontend):
npm run dev
In another terminal (backend):
npm start
-
Open your browser Navigate to
http://localhost:3000
To sync your time entries with Notion:
- Go to Notion Integrations
- Click "New integration"
- Give it a name (e.g., "Work Scheduler")
- Copy the "Internal Integration Token"
Create a new database in Notion with these columns:
Column Name | Type | Required |
---|---|---|
Project | Title | β |
Description | Text | β |
Date | Date | β |
Hours | Number | β |
Start Time | Text | β |
End Time | Text | β |
- Open your database in Notion
- Click "Share" in the top right
- Add your integration by name
- Copy the database ID from the URL
- Go to the "Notion Setup" tab in the app
- Enter your API token and database ID
- Click "Test Connection"
- Start logging time! π
- Click the "Log Time" button
- Fill in:
- Project: What you're working on
- Description: Details about the work
- Hours: Time spent (supports decimals like 2.5)
- Start/End Time: Optional time range
- Click "Save Entry"
- Calendar: See daily totals and click dates for details
- Week View: Detailed weekly breakdown with summaries
- Statistics: Monthly comparisons, project breakdowns, and trends
Once configured, all new time entries automatically sync to your Notion database. You can also view and edit entries directly in Notion.
notion-work-scheduler/
βββ src/
β βββ components/ # React components
β β βββ TimeEntryForm.jsx
β β βββ WeekView.jsx
β β βββ Stats.jsx
β β βββ NotionSetup.jsx
β βββ App.jsx # Main application
β βββ main.jsx # React entry point
β βββ index.css # Global styles
βββ server.js # Express backend
βββ package.json
βββ README.md
- Built with React 18 and Vite for fast development
- Styled with Tailwind CSS for modern UI
- Uses date-fns for date manipulation
- Local storage for data persistence
- Express server for Notion API integration
- CORS enabled for local development
- Error handling for Notion API edge cases
- RESTful API design
- @notionhq/client: Official Notion API client
- react-calendar: Beautiful calendar component
- date-fns: Modern date utility library
- lucide-react: Beautiful icon library
- tailwindcss: Utility-first CSS framework
- Local Storage: All data is stored locally in your browser
- No Analytics: We don't track your usage or data
- Secure API: Your Notion tokens are only used for direct API calls
- Open Source: Full source code is available for inspection
-
Build the frontend:
npm run build
-
Deploy the
dist
folder to your hosting platform
- Deploy
server.js
to your backend platform - Set environment variables:
PORT
: Server port (default: 3001)NODE_ENV
: production
Create a .env
file for local development:
PORT=3001
NODE_ENV=development
POST /api/notion/test
- Test Notion connectionPOST /api/notion/entries
- Add time entry to NotionPOST /api/notion/entries/sync
- Sync entries from NotionGET /api/health
- Health check
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
MIT License - feel free to use this project for personal or commercial purposes.
Having issues? Check these common solutions:
- Ensure the database ID is correct
- Make sure you've shared the database with your integration
- Verify your integration token is correct
- Check that the integration has access to the workspace
- Ensure your database has all required columns
- Column names must match exactly (case-sensitive)
- Time tracking with start/stop functionality
- Export data to CSV/PDF
- Multiple workspace support
- Mobile app (React Native)
- Advanced reporting features
- Team collaboration features
Built with β€οΈ using React, Node.js, and the Notion API