{"id":28323670,"url":"https://github.com/barisgit/nextwiki","last_synced_at":"2025-06-24T00:30:48.170Z","repository":{"id":284044748,"uuid":"953619002","full_name":"barisgit/NextWiki","owner":"barisgit","description":"NextWiki | A wiki inspired by WikiJS, built on modern tools.","archived":false,"fork":false,"pushed_at":"2025-05-17T14:26:08.000Z","size":6544,"stargazers_count":14,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-02T01:04:27.135Z","etag":null,"topics":["documentation","drizzle-orm","nextjs","trpc","wiki"],"latest_commit_sha":null,"homepage":"https://next-wiki.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/barisgit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-03-23T19:10:29.000Z","updated_at":"2025-05-29T11:17:02.000Z","dependencies_parsed_at":"2025-04-24T16:43:01.355Z","dependency_job_id":null,"html_url":"https://github.com/barisgit/NextWiki","commit_stats":null,"previous_names":["barisgit/nextwiki"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/barisgit/NextWiki","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barisgit%2FNextWiki","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barisgit%2FNextWiki/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barisgit%2FNextWiki/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barisgit%2FNextWiki/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/barisgit","download_url":"https://codeload.github.com/barisgit/NextWiki/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barisgit%2FNextWiki/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261582423,"owners_count":23180592,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["documentation","drizzle-orm","nextjs","trpc","wiki"],"created_at":"2025-05-25T16:14:38.750Z","updated_at":"2025-06-24T00:30:48.164Z","avatar_url":"https://github.com/barisgit.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NextWiki\n\n![NextWiki Main Page Dark](./assets/nextwiki-home-dark.png)\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://next-wiki.com\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Live%20Demo-Visit%20Now-blue?style=for-the-badge\u0026logo=vercel\" alt=\"Live Demo\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n\nAn open-source wiki system built with modern web technologies, inspired by WikiJS. NextWiki provides a flexible, extensible platform for creating and managing knowledge bases.\n\n## 🚀 Features\n\n- **Modern Stack**: Built with Next.js 15, React 19, Drizzle ORM, tRPC, NextAuth, Tailwind CSS, Codemirror, Shadcn UI, and more\n- **Markdown Support**: Write content using simple Markdown syntax\n- **Direct Image Upload**: Upload images directly with paste or drag and drop\n- **Syntax Highlighting**: Syntax highlighting for code blocks\n- **Page/Folder Moving Functionality**: Move/rename pages and folders to different locations\n- **Authentication**: Secure login with credentials or OAuth providers (only password login is implemented for now)\n- **Advanced Search**: Full-text and fuzzy search\n- **Tags \u0026 Categories**: Organize your content effectively\n- **Asset Manager**: Upload, delete, and manage assets (images, videos, PDFs, etc.)\n- **Permissions**: Group and granular permission based access control\n- **Settings**: Centralized settings for the wiki, manageable by the admin\n\n## 🛠️ Tech Stack\n\n- **Framework**: [Next.js](https://nextjs.org) (for the frontend and core features)\n- **Backend**: Optional [NestJS](https://nestjs.com) on Fastify (for features like WebSockets, planned for Yjs integration)\n- **Database**: PostgreSQL with [Drizzle ORM](https://orm.drizzle.team)\n- **API**: Type-safe APIs with [tRPC](https://trpc.io) (primarily within Next.js)\n- **Authentication**: [NextAuth.js](https://next-auth.js.org)\n- **Search**: PostgreSQL full-text search with trigram similarity for fuzzy matching\n- **Styling**: Tailwind CSS\n- **Monorepo Management**: Turborepo\n- **Deployment**: Compatible with Vercel, Netlify, or self-hosted (NestJS backend requires a Node.js environment)\n\n*Note*: Most functionality resides within the Next.js application and can run on serverless platforms like Vercel. The NestJS backend is included to support optional self-hosted WebSocket functionality, anticipating future integration with Yjs for real-time collaboration, without relying on external providers.\n\n## 🔮 Planned Features\n\n- [ ] **S3 Asset Storage**: Store assets in S3 or somewhere else\n- [ ] **Version history**: Track changes and revert to previous versions\n- [ ] **Visual editor**: A visual editor for creating and editing pages\n- [ ] **Real-time Collaboration**: Multiple users can edit pages simultaneously using Yjs\n- [ ] **Better Settings**: Better settings, ability to manage authentication providers, etc.\n- [ ] **Different theme support**: Ability to switch between different themes\n- [ ] **Import/Export**: Ability to import and export pages from and to other wiki systems\n\n## 📦 Getting Started\n\n### Prerequisites\n\n- Node.js 18+ (pnpm required)\n- PostgreSQL database (or Neon serverless PostgreSQL)\n\n### Installation\n\n1. Clone the repository:\n\n   ```bash\n   git clone https://github.com/barisgit/nextwiki.git\n   cd nextwiki\n   ```\n\n2. Install dependencies:\n\n   ```bash\n   pnpm install\n   ```\n\n3. Copy the environment file and configure it:\n\n   ```bash\n   cp apps/web/.env.example apps/web/.env\n   cp packages/db/.env.example packages/db/.env\n   ```\n\n   Update the values in `.env` with your database and authentication settings.\n\n4. Set up the database with one of the following commands:\n\n   ```bash\n   pnpm run db:setup     # Create the database in docker and seed it with example data\n\n   pnpm run db:docker    # Just create the database in docker without seeding it\n   ```\n\n5. Start the development server:\n\n   ```bash\n   pnpm run dev:web\n   pnpm run dev:backend\n   ```\n\n6. Open [http://localhost:3000](http://localhost:3000) in your browser to see the wiki.\n\n## Search Features\n\nNextWiki includes a powerful search system with several capabilities:\n\n- **Full-text search**: Using PostgreSQL's tsvector/tsquery for efficient text search\n- **Fuzzy matching**: Find content even when search terms have typos\n- **Highlighted results**: Search results and matched terms are highlighted\n- **Multi-layer approach**:\n  1. Exact vector matching (highest relevance)\n  2. Title matching (high relevance)\n  3. Content matching (medium relevance)\n  4. Similarity matching for typos (lower relevance)\n\nWhen a user clicks a search result, they'll be taken directly to the page with all instances of the search term highlighted, and the view will automatically scroll to the first match.\n\n## Project Structure\n\nThis project uses a Turborepo monorepo structure:\n\n```text\n├── apps/\n│   ├── backend/         # Optional NestJS backend (Fastify)\n│   └── web/             # Next.js frontend application\n├── packages/\n│   ├── auth/            # Authentication utilities (NextAuth)\n│   ├── db/              # Drizzle ORM schema, migrations, and seeding\n│   ├── eslint-config/   # Shared ESLint configuration\n│   ├── logger/          # Shared logger configuration\n│   ├── tailwind-config/ # Shared Tailwind CSS configuration\n│   ├── types/           # Shared TypeScript types\n│   ├── typescript-config/ # Shared TypeScript configuration\n│   └── ui/              # Shared React UI components (Shadcn UI)\n├── .github/             # GitHub Actions workflows\n├── schema.dbml          # Database schema ER diagram\n├── assets/              # Static assets like images for README\n├── docs/                # Project documentation\n└── ... configuration files (pnpm, turbo, prettier, etc.)\n```\n\n## Screenshots\n\n![NextWiki Main Page](./assets/nextwiki-home.png)\n![NextWiki Main Page Dark](./assets/nextwiki-home-dark.png)\n![NextWiki Main Page Admin](./assets/nextwiki-home-admin.png)\n\n![NextWiki Search](./assets/nextwiki-search.png)\n\n![NextWiki Page](./assets/nextwiki-page.png)\n![NextWiki Edit Page](./assets/nextwiki-edit.png)\n\n![NextWiki Browser](./assets/nextwiki-browser.png)\n![NextWiki Move Page](./assets/nextwiki-move.png)\n\n![NextWiki Admin Dashboard](./assets/nextwiki-admin-dashboard.png)\n![NextWiki Settings](./assets/nextwiki-admin-settings.png)\n\n## 🤝 Contributing\n\nWe welcome contributions! Please see our [CONTRIBUTING.md](./CONTRIBUTING.md) guide for details on how to get started. Even non-code contributions like documentation improvements, bug reports, and feature suggestions are appreciated!\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](./LICENSE) file for details.\n\n[![Star History](https://api.star-history.com/svg?repos=barisgit/nextwiki\u0026type=Date)](https://star-history.com/#barisgit/nextwiki\u0026Date)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarisgit%2Fnextwiki","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbarisgit%2Fnextwiki","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarisgit%2Fnextwiki/lists"}