NowShare is a modern knowledge sharing platform, enabling communities to create, share, and discuss content efficiently. This project is structured as a monorepo, containing both backend and frontend applications.
Note: This is a side project developed for learning and experimentation purposes.
- Frontend: Next.js 15, TypeScript, Tailwind CSS
- Backend: FastAPI & Strawberry (Python)
- Database: PostgreSQL (SQLAlchemy)
- Testing: Pytest, FastAPI TestClient
- CI/CD: GitHub Actions
- Deployment: Docker Swarm
- Set up CI/CD pipeline (GitHub Actions)
- Project setup with Next.js 15 + Tailwind CSS
- Basic UI for knowledge pages
- Implement oauth flow with github
- Implement pages for article crud
- Implement components for article comment crud
- Integrate with backend API for data persistence
- Project setup (FastAPI)
- Database schema for users, articles and comments
- Set up graphql schemas and mutations for articles and comments
- Oauth with github
- Implement article CRUD (read, update, delete)
- Implement user comment CRUD (read, update, delete)
- Tests
git clone https://github.com/your-username/knowledge-platform.git
cd knowledge-platformFor frontend:
cd frontend
npm install
npm run devFor backend:
First, install Poetry, then install the project dependencies:
cd backend
poetry install
poetry run task run- ✅ Created monorepo structure
- ✅ Initialized frontend with Next.js and Tailwind CSS
- ✅ Initialized backend with FastAPI & Strawberry
- ✅ Created basic project structure
- ✅ Set up basic backend project configuration and dependencies
- ✅ CI/CD pipelines for frontend and backend applications
- ✅ Project entities created
- ✅ Alembic setup with first migration
- ✅ REST API endpoints to handle github oauth, logout and token refresh
- ✅ GraphQL queries and mutations for user, articles and comments
- ✅ Apollo client (graphql) configured
- ✅ Navbar and articles listing
- ✅ Article inspect using tailwind prose to render article content formated in markdown
- ✅ Theme toggle and code highlight for article content
- ✅ Page to create articles using rich markdown editior with preview and fullscreen mode
- ✅ Oauth flow with api implemented, custom hook to get user data stored in the context api, component to control interface rendering only when user is authenticated
- ✅ Custom Apollo link to refresh access token and retry request when the access token expires (if the request fails again, the user session is terminated)
- ✅ Page to list all articles owned by the current user and actions to edit the article and also delete
- ✅ Articles comments implemented