A customizable personal dashboard built with Next.js and Tailwind CSS. This project features a sliding calendar, priority cards, and a notes section - all with a fun, paper-crafty aesthetic!
- Calendar Slider: A fun, interactive calendar widget
- Priority Cards: Select and organize your top 3 priorities
- Keep a Note: A simple note-taking feature with local storage
- Clone the repository
- Install dependencies:
npm install- Run the development server:
npm run dev- Open http://localhost:9127 in your browser
Before pushing your code to your repository (which will trigger a Vercel deployment), make sure to check for any code style issues:
npm run lintCommon issues and solutions:
- Missing imports: Double-check your import statements and make sure all components are properly imported
- Unused variables: Remove any variables you're not using
- Missing dependencies in useEffect: Make sure you've included all variables used in useEffect in its dependency array
- Props validation: Ensure you've properly typed your props with TypeScript
Pro tip: Many IDEs (like VS Code) can show you linting errors in real-time. Look for red squiggly lines under your code!
For more complex issues:
- Read the error message carefully - ESLint usually tells you exactly what's wrong
- Check the ESLint documentation for specific rule explanations
- Consider using GitHub Copilot or ChatGPT to help understand and fix linting errors
- Don't ignore linting errors - they help maintain code quality!
Feel free to customize this project! Some ideas:
- Change "Bobby's Room" to your own title in
app/layout.tsx - Add new sections or widgets
- Modify the existing components
- Create your own theme by changing the colors in
ConstructionPaper.tsxandStuccoBackground.tsx
/app
├── fonts.ts # Google Font configurations
├── layout.tsx # Root layout with font settings
└── page.tsx # Main page component
/components
├── /ui # shadcn components (button, alert, etc.)
├── BobbysRoom.tsx # Main container component
├── CalendarSlider.tsx # Interactive calendar widget
├── PriorityCard.tsx # Individual priority card component
└── ... # Other components
The /ui folder contains shadcn components. These were added using:
npx shadcn@latest add button
npx shadcn@latest add alert
npx shadcn@latest add alert-dialogNote: The latest version uses shadcn instead of shadcn-ui for installation.
In PriorityCardSection.tsx, you'll notice this code:
const priorityCards = [
{ imagePath: "/images/hobby.png", label: "Hobby" },
// ... more cards
].map((card, index) => ({
...card,
priority: index < 6,
}));Don't get confused by the priority property here! While this component is about setting personal priorities, this particular priority property is actually for Next.js image optimization. It tells Next.js to load the first 6 card images immediately (for cards visible "above the fold") and lazy-load the rest. This makes the initial page load faster!
- Add New Sections: Create your own widgets or sections
- Modify Themes: Change the construction paper colors or background style
- Extend Features: Add more interactive elements or persistence options
- Responsive Design: Enhance mobile responsiveness
- Animations: Add custom animations for card selections or note updates
The app uses localStorage to persist:
- Selected priority cards
- Personal notes
- Calendar slider positions
- Next.js 14
- React 19
- Tailwind CSS
- shadcn components
- TypeScript
Feel free to fork this project and make it your own! This is a learning tool, so experiment and have fun with it.