| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
A full-stack PDF management system built as a comprehensive GraphQL learning project, featuring modern web technologies, distributed database architecture, and advanced security features.
NoteBook is a sophisticated PDF management application that demonstrates advanced GraphQL implementation patterns, modern React development, and distributed database design. This project was created as a comprehensive learning exercise to master GraphQL concepts including queries, mutations, real-time subscriptions, and complex schema design.
Flask + GraphQL (Ariadne) ├── GraphQL Schema Definition ├── Query & Mutation Resolvers ├── CouchDB Integration ├── Encryption Services └── Analytics Engine
React 18 + Apollo Client ├── GraphQL Client Setup ├── Component Architecture ├── State Management ├── Offline Storage └── TailwindCSS Styling
CouchDB (NoSQL) ├── Document Storage ├── Distributed Replication ├── Real-time Synchronization └── Conflict Resolution
Clone the repository
git clone https://github.com/Arison99/NoteBook.git
cd NoteBookBackend Setup
cd backend
pip install -r requirements.txt
python app.pyFrontend Setup
cd frontend
npm install
npm startDatabase Setup
# Start backend (Port 5000)
cd backend && python app.py
# Start frontend (Port 3000)
cd frontend && npm start
# Access application
http://localhost:3000type PDF {
id: ID!
filename: String!
category: String!
encrypted_data: String!
compressed: Boolean!
original_size_bytes: Int!
compressed_size_bytes: Int!
created_at: String!
last_accessed: String
access_count: Int!
}
type Category {
id: ID!
name: String!
pdf_ids: [ID!]!
created_at: String!
last_modified: String!
}# Get all PDFs with pagination
query GetPDFs($limit: Int, $offset: Int) {
pdfs(limit: $limit, offset: $offset) {
id
filename
category
compressed
created_at
}
}
# Upload new PDF
mutation UploadPDF($file: Upload!, $category: String!) {
uploadPDF(file: $file, category: $category) {
id
filename
compressed_size_bytes
}
}NoteBook/ ├── backend/ # Flask + GraphQL Backend │ ├── app.py # Application entry point │ ├── schema.py # GraphQL schema definition │ ├── service.py # Business logic layer │ ├── repository.py # Data access layer │ ├── analytics_service.py # Analytics engine │ ├── crypto_utils.py # Encryption utilities │ └── requirements.txt # Python dependencies ├── frontend/ # React Frontend │ ├── src/ │ │ ├── components/ # Reusable React components │ │ ├── pages/ # Page components │ │ ├── utils/ # Utility functions │ │ ├── App.jsx # Main application component │ │ └── graphql.js # Apollo Client setup │ ├── package.json # Node.js dependencies │ └── tailwind.config.js # TailwindCSS configuration └── LICENSE # BSD 3-Clause License
Contributions are welcome! This project serves as a learning resource for GraphQL and modern web development.
This project is licensed under the BSD 3-Clause License - see the LICENSE file for details.
Byonanebye Arison - Full-Stack Developer & GraphQL Enthusiast
⭐ Star this repository if it helped you learn GraphQL! ⭐
| Back | FazBrowse Home | New Git URL |