A beautiful annual calendar app to visualize and organize your entire year. Built with Next.js, InstantDB, and Tailwind CSS.
- 📆 Full Year View - See all 365 days at a glance
- 🏷️ Categories - Organize events with color-coded categories
- 📅 Multi-day Events - Create events that span multiple days
- 🔗 Google Calendar Sync - Import events from Google Calendar
- 🔐 Magic Link Auth - Passwordless authentication via email
- 📱 Responsive Design - Works on desktop and mobile
- ♿ Accessible - Keyboard navigation and screen reader support
git clone https://github.com/karthikpasupathy/yearview.git
cd yearview
npm install- Create a free account at InstantDB
- Create a new app in the dashboard
- Copy your App ID
cp .env.example .env.localEdit .env.local and add your InstantDB App ID:
NEXT_PUBLIC_INSTANT_APP_ID=your_app_id_here
In your InstantDB dashboard, go to Permissions and add:
{
"categories": {
"allow": {
"view": "data.userId == auth.id",
"create": "auth.id != null && data.userId == auth.id",
"update": "data.userId == auth.id",
"delete": "data.userId == auth.id"
}
},
"events": {
"allow": {
"view": "data.userId == auth.id",
"create": "auth.id != null && data.userId == auth.id",
"update": "data.userId == auth.id",
"delete": "data.userId == auth.id"
}
}
}npm run devOpen http://localhost:3000 to see your calendar!
To enable Google Calendar sync:
- Go to Google Cloud Console
- Create a new project or select an existing one
- Enable the Google Calendar API
- Create OAuth 2.0 credentials (Web application)
- Add your domain to authorized JavaScript origins
- Add your
NEXT_PUBLIC_GOOGLE_CLIENT_IDto.env.local
- Framework: Next.js 16 (App Router)
- Database: InstantDB (Real-time sync)
- Styling: Tailwind CSS
- Auth: InstantDB Magic Link
- Language: TypeScript
yearview/
├── app/ # Next.js app router pages
├── components/ # React components
├── contexts/ # React contexts (Toast)
├── hooks/ # Custom React hooks
├── lib/ # Utilities and configurations
└── public/ # Static assets
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with InstantDB for real-time data sync
- Icons from Heroicons
- Fonts from Google Fonts
