An open source citation manager, generator, and sharing tool. Ad-free, easy to use, with a clean Wikipedia 2005-inspired design.
- Generate Citations - Create properly formatted citations from URLs, DOIs, ISBNs, or manual entry
- Organize - Save citations to Lists, organize Lists into Projects
- Share - Share Lists or Projects via public links
- Export - Copy to clipboard or download as text, BibTeX, or RIS
- APA 7th Edition
- MLA 9th Edition
- Chicago 17th Edition
- Harvard
Books, Academic Journals, Websites, Blogs, Newspapers, Videos, Images, Film, TV Series, TV Episodes, and Miscellaneous.
| Platform | Status |
|---|---|
| Web App | Ready |
| Chrome Extension | Ready |
| PWA (installable) | Ready |
| Electron Desktop | Ready |
| Layer | Technology |
|---|---|
| Frontend | Next.js 16, React 19, Tailwind CSS 4.0 |
| UI | Custom Wikipedia-style design system |
| Auth | Clerk |
| Database | DynamoDB (AWS SDK v3, single-table) |
| Testing | Vitest + Testing Library (225 tests) |
| Desktop | Electron |
| Extension | Chrome Manifest v3 |
- Node.js 18+
- npm, yarn, or pnpm
# Clone the repository
git clone https://github.com/aicoder2009/opencitation.git
cd opencitation
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env.local
# Edit .env.local with your API keys
# Start development server
npm run dev# Clerk Authentication
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
CLERK_SECRET_KEY=
# AWS DynamoDB (optional - uses local store if not set)
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_REGION=npm run dev # Start dev server
npm run build # Production build
npm run lint # ESLint
npm run test # Run tests (225 tests)- Quick Add: Paste a URL, DOI, or ISBN - metadata is extracted automatically
- Manual Entry: Form-based entry for full control over all fields
- Style Selection: Choose from APA, MLA, Chicago, or Harvard
- Lists: Collections of citations (like a bibliography)
- Projects: Containers for multiple Lists (like a semester or thesis)
- Tags: Color-coded tags for categorization
- Generate public links for Lists or Projects
- Export as plain text, BibTeX (.bib), or RIS (.ris)
- Embed badge on external sites
opencitation/
├── src/
│ ├── app/ # Next.js pages & API routes
│ │ ├── cite/ # Citation generator
│ │ ├── lists/ # Lists management
│ │ ├── projects/ # Projects management
│ │ ├── share/[code]/ # Public share pages
│ │ ├── embed/ # Embed badge page
│ │ └── api/ # REST endpoints
│ ├── components/
│ │ ├── wiki/ # Wikipedia-style UI
│ │ ├── pwa/ # PWA components
│ │ └── retro/ # Retro print animation
│ ├── lib/
│ │ ├── citation/ # Formatters & exporters
│ │ ├── db/ # DynamoDB client
│ │ └── pwa/ # Service worker utilities
│ └── types/ # TypeScript definitions
├── browser-extension/ # Chrome extension
├── electron/ # Desktop app
└── public/ # Static assets
Contributions are welcome! Please read the development guidelines in CLAUDE.md before submitting PRs.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add 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.
- Design inspired by Wikipedia circa 2005-2010
- Built for students who hate citation generators with ads