{"id":26433639,"url":"https://github.com/seneso/notion-clone","last_synced_at":"2026-04-07T16:32:24.161Z","repository":{"id":282965390,"uuid":"950245720","full_name":"SENESO/notion-clone","owner":"SENESO","description":"This project is a full-stack clone of Notion.com, implementing the core functionality with a PHP backend (Slim Framework) and a React frontend. The application features real-time collaboration, database-like blocks (tables, Kanban boards, calendars), and more.","archived":false,"fork":false,"pushed_at":"2025-03-17T22:38:34.000Z","size":138,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-17T22:49:03.716Z","etag":null,"topics":["backend-api","backend-service","clone","clone-app","clone-coding","clone-website","docker","frontend","html","javascript","notion","notion-api","notion-clone","php","react","typescript","vue","workspace","workspaces","zustand"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SENESO.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2025-03-17T21:29:57.000Z","updated_at":"2025-03-17T22:47:11.000Z","dependencies_parsed_at":"2025-03-17T22:59:53.228Z","dependency_job_id":null,"html_url":"https://github.com/SENESO/notion-clone","commit_stats":null,"previous_names":["seneso/notion-clone"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SENESO%2Fnotion-clone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SENESO%2Fnotion-clone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SENESO%2Fnotion-clone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SENESO%2Fnotion-clone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SENESO","download_url":"https://codeload.github.com/SENESO/notion-clone/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244173580,"owners_count":20410301,"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":["backend-api","backend-service","clone","clone-app","clone-coding","clone-website","docker","frontend","html","javascript","notion","notion-api","notion-clone","php","react","typescript","vue","workspace","workspaces","zustand"],"created_at":"2025-03-18T07:17:51.225Z","updated_at":"2026-04-07T16:32:24.009Z","avatar_url":"https://github.com/SENESO.png","language":"PHP","readme":"# Notion Clone with PHP Backend\n\nThis project is a full-stack clone of Notion.com, implementing the core functionality with a PHP backend (Slim Framework) and a React frontend. The application features real-time collaboration, database-like blocks (tables, Kanban boards, calendars), and more.\n\n## Features\n\n- **User Authentication**: JWT-based authentication system\n- **Workspaces**: Create and manage multiple workspaces\n- **Hierarchical Pages**: Create nested pages with unlimited depth\n- **Block-based Content**: Rich text editing with various block types\n- **Database-like Blocks**: Tables, Kanban boards, and Calendars\n- **Real-time Collaboration**: See other users' cursors and changes in real-time\n- **File Uploads**: Support for image and file attachments\n- **Search**: Full-text search across pages and blocks\n\n## Project Structure\n\n```\nnotion-php-clone/\n├── backend/              # PHP backend (Slim Framework)\n│   ├── bin/              # CLI scripts\n│   ├── logs/             # Application logs\n│   ├── public/           # Public files and entry point\n│   ├── src/              # Source code\n│   │   ├── config/       # Configuration files\n│   │   ├── controllers/  # Controller classes\n│   │   ├── middlewares/  # Middleware classes\n│   │   ├── models/       # Data models\n│   │   ├── routes/       # Route definitions\n│   │   ├── services/     # Service classes\n│   │   ├── utils/        # Utility functions\n│   │   └── WebSocket/    # WebSocket server\n│   ├── uploads/          # File uploads\n│   ├── vendor/           # Dependencies\n│   ├── .env              # Environment variables\n│   ├── composer.json     # Composer configuration\n│   └── Dockerfile        # Docker config for backend\n│\n├── frontend/             # React frontend (Vite + TypeScript)\n│   ├── public/           # Static assets\n│   ├── src/              # Source code\n│   │   ├── components/   # React components\n│   │   ├── hooks/        # Custom React hooks\n│   │   ├── pages/        # Page components\n│   │   ├── services/     # API services\n│   │   ├── stores/       # Zustand state stores\n│   │   └── lib/          # Utility functions\n│   ├── package.json      # NPM dependencies\n│   └── Dockerfile        # Docker config for frontend\n│\n├── docker-compose.yml    # Docker Compose configuration\n└── README.md             # Project documentation\n```\n\n## Technology Stack\n\n### Backend\n- PHP 8.1\n- Slim Framework 4\n- PostgreSQL\n- Doctrine ORM\n- JWT Authentication\n- Ratchet (WebSockets)\n- Composer\n\n### Frontend\n- React 18\n- TypeScript\n- Zustand (State Management)\n- React Router\n- ShadcnUI / Tailwind CSS\n- Axios\n\n## Setup Instructions\n\n### Prerequisites\n\n- Docker and Docker Compose\n- Git\n\n### Quick Start with Docker (Recommended)\n\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/yourusername/notion-php-clone.git\n   cd notion-php-clone\n   ```\n\n2. Create a `.env` file for the Docker environment:\n   ```bash\n   echo \"JWT_SECRET=your_secure_jwt_secret_here\" \u003e .env\n   ```\n\n3. Start the application using Docker Compose:\n   ```bash\n   docker-compose up -d\n   ```\n\n4. Initialize the database schema:\n   ```bash\n   docker-compose exec backend php bin/create-schema.php\n   ```\n\n5. Access the application:\n   - Frontend: [http://localhost:3000](http://localhost:3000)\n   - Backend API: [http://localhost:8000/api](http://localhost:8000/api)\n   - Adminer (Database Management): [http://localhost:8081](http://localhost:8081)\n\n### Manual Setup\n\n#### Backend Setup\n\n1. Navigate to the backend directory:\n   ```bash\n   cd notion-php-clone/backend\n   ```\n\n2. Install dependencies:\n   ```bash\n   composer install\n   ```\n\n3. Create a `.env` file based on `.env.example`:\n   ```bash\n   cp .env.example .env\n   ```\n\n4. Set up a PostgreSQL database and update the `.env` file with your database credentials.\n\n5. Create the database schema:\n   ```bash\n   php bin/create-schema.php\n   ```\n\n6. Start the PHP development server:\n   ```bash\n   composer start\n   ```\n\n7. Start the WebSocket server:\n   ```bash\n   php bin/websocket-server.php\n   ```\n\n#### Frontend Setup\n\n1. Navigate to the frontend directory:\n   ```bash\n   cd notion-php-clone/frontend\n   ```\n\n2. Install dependencies:\n   ```bash\n   npm install\n   ```\n\n3. Create an `.env` file with API and WebSocket URLs:\n   ```\n   REACT_APP_API_URL=http://localhost:8000/api\n   REACT_APP_WS_URL=ws://localhost:8080\n   ```\n\n4. Start the development server:\n   ```bash\n   npm run dev\n   ```\n\n## Usage\n\n### User Registration and Login\n\n1. Create a new account by visiting [http://localhost:3000/register](http://localhost:3000/register)\n2. Log in with your credentials at [http://localhost:3000/login](http://localhost:3000/login)\n\n### Creating Content\n\n1. Create a workspace from the dashboard\n2. Create pages within your workspace\n3. Use the block editor to add content:\n   - Text blocks\n   - Headings\n   - Lists\n   - Tables\n   - Kanban boards\n   - Calendars\n   - And more...\n\n### Real-time Collaboration\n\n1. Share the URL of a page with other users\n2. See real-time cursors and changes as others edit the same page\n3. Changes are automatically synchronized across all users\n\n### Managing Files\n\n1. Upload files and images directly in the editor\n2. View and manage uploaded files\n3. Include images and file attachments in your pages\n\n## API Endpoints\n\nSee the full API documentation in the [API.md](API.md) file.\n\n## License\n\nMIT\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseneso%2Fnotion-clone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseneso%2Fnotion-clone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseneso%2Fnotion-clone/lists"}