Linkedin notes only allow a maximum of 200 characters for initial connection requests. But some pitches take more than 200 characters
I don't want to pay for Linkedin Premium, and I needed an excuse to learn how to use hono
QuickNote, a simple way to send markdown notes to anyone.
Think pastebin, but customizable short slugs that lead to a landing page with your note.
Auth
- Basic email, password auth with a JWT stored locally.
- A way to recover lost accounts
- update passwords
- password reset
Notes
- A markdown editor, then we store the text in a mongoDB collection with it's slug and metadata (timestamps, userID)
Most of the UI is vibe coded
Before you begin, ensure you have the following installed on your system:
- Bun - JavaScript runtime and package manager
- MongoDB - Database (local installation or MongoDB Atlas)
- Git - Version control
-
Clone the repository
git clone https://github.com/JoeEverest/quicknote.git cd quicknote
-
Navigate to the backend directory
cd backend -
Install dependencies
bun install
-
Environment Configuration
Create a
.envfile in the backend directory with the following variables:MONGO_URI=mongodb://localhost:27017/quicknote JWT_SECRET=your-super-secret-jwt-key-here PORT=3000
Note: Replace the values with your actual configuration:
MONGO_URI: Your MongoDB connection string (local or Atlas)JWT_SECRET: A secure random string for JWT token signingPORT: Port number for the backend server (default: 3000)
-
Start the development server
bun run dev
The backend API will be available at
http://localhost:3000
-
Open a new terminal and navigate to the frontend directory
cd frontend -
Install dependencies
bun install
-
Start the development server
bun run dev
The frontend application will be available at
http://localhost:5173
- Install MongoDB locally following the official installation guide
- Start MongoDB service
- The application will automatically create the necessary collections
- Create a free account at MongoDB Atlas
- Create a new cluster
- Get your connection string and update the
MONGO_URIin your.envfile
To verify everything is working correctly:
- Visit
http://localhost:5173in your browser - Register a new account
- Create your first note
- Share the note using the generated slug
cd backend
bun run build # If build script exists, otherwise the app runs directlycd frontend
bun run buildThe built files will be in the frontend/dist directory, ready for deployment.
- Hono - Fast, lightweight web framework
- Bun - JavaScript runtime and package manager
- MongoDB - NoSQL database with Mongoose ODM
- Zod - TypeScript-first schema validation
- JWT - JSON Web Tokens for authentication
- TypeScript - Type safety and better developer experience
- React 19 - UI library with TypeScript
- React Router - Client-side routing
- TanStack Query - Data fetching and caching
- Tailwind CSS - Utility-first CSS framework
- Shadcn/UI - Component library built on Radix UI
- Motion (Framer Motion) - Animations
- React Markdown - Markdown rendering with GitHub Flavored Markdown
- Vite - Build tool and development server
quicknote/
├── backend/ # Hono API server
│ ├── src/
│ │ ├── routes/ # API routes
│ │ ├── utils/ # Helper functions
│ │ └── index.ts # Server entry point
│ └── package.json
└── frontend/ # React frontend
├── src/
│ ├── components/ # Reusable components
│ ├── pages/ # Page components
│ ├── services/ # API services
│ └── lib/ # Utilities
└── package.json
POST /app/auth/register- User registrationPOST /app/auth/login- User loginGET /app/notes- Get user's notesPOST /app/notes- Create new notePUT /app/notes/:id- Update noteDELETE /app/notes/:id- Delete noteGET /app/note/:slug- Get public note by slug
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.