Simple, extensible tree record-keeping for researchers and hobbyists.
π Explore the docs Β»
View Demo
Β·
Report Bug
Β·
Request Feature
- About The Project
- Features
- Tech Stack
- Project Structure
- Getting Started
- Usage
- Deployment
- Roadmap
- Contributing
- License
- Contact
MyTree Journal is a full-stack tree record-keeping system designed for simplicity and extensibility. Perfect for researchers, hobbyists, or small-to-medium scale cultivation projects.
- π― Purpose-built for tree and plant tracking
- π± Mobile-first responsive design
- π Dark mode support out of the box
- πΈ Media management with automatic thumbnails
- π QR codes for easy sharing and tracking
| Feature | Description |
|---|---|
| π± Strain Management | Organize plants by genetic strains |
| π¦ Batch Tracking | Group plants by cultivation batches |
| π³ Tree Records | Comprehensive individual plant records |
| πΈ Media Attachments | Images and documents per tree |
| π QR Codes | Generate shareable QR codes |
| Feature | Description |
|---|---|
| π¨ Modern UI | Organic Biophilic + Claymorphism design |
| π§± Bento Grid | Responsive dashboard with hero cards |
| π Multi-lang | Thai (TH) & English (EN) support |
| π± Responsive | Works on desktop, tablet, and mobile |
| π Dark Mode | System-aware theme switching |
| β‘ Fast | useMemo, useCallback optimizations |
| βΏ Accessible | ARIA labels and keyboard navigation |
| Feature | Description |
|---|---|
| 𧬠Genetics | Track lineage, parents, and strains |
| π Timeline | Detailed lifecycle tracking |
| πΈ Pollination | Breeding and seed harvest records |
| π Smart Folders | Auto-organize images by tree name |
| πΌοΈ Thumbnails | Automatic thumbnail generation |
| π€ Drag & Drop | Upload files with drag-and-drop |
mytree-journal/
βββ π mytree_journal/ # Django project configuration
β βββ settings.py # Database, CORS, timezone config
β
βββ π trees/ # Django app (models, views, API)
β βββ models.py # Strain, Batch, Tree, Image models
β βββ serializers.py # DRF serializers
β βββ views.py # API ViewSets
β βββ migrations/ # Database migrations
β
βββ π mytree-frontend/ # Next.js frontend
β βββ app/
β β βββ page.tsx # Dashboard
β β βββ types.ts # TypeScript type definitions
β β βββ utils.ts # Shared utility functions
β β βββ constants.ts # App-wide constants
β β βββ strains/ # Strain management
β β βββ batches/ # Batch management
β β βββ tree/[id]/ # Tree detail page
β βββ components/ # Reusable UI components
β β βββ TreeCard.tsx # Tree card with clay styling
β β βββ DashboardStats.tsx # Bento grid stats
β β βββ InfoCard.tsx # Reusable info card
β β βββ Navbar.tsx # Responsive navigation
β βββ constants/ # Shared constants
β β βββ treeStatus.ts # Tree status constants
β βββ services/ # API service layer
β β βββ treeService.ts # Tree API client
β βββ contexts/ # React contexts
β β βββ LanguageContext.tsx # i18n context
β βββ hooks/ # Custom React hooks
β
βββ π media/ # Uploaded files
β βββ tree_images/ # Tree photos & thumbnails
β βββ tree_documents/ # Attached documents
β
βββ π nginx/ # Deployment config
βββ π requirements.txt # Python dependencies
βββ π package.json # Node.js dependencies
βββ π CHANGELOG.md # Version history
βββ π README.md # This file
| Requirement | Version |
|---|---|
| Node.js | v22.13.1+ |
| npm | v10.8.3+ |
| Python | 3.11+ |
| PostgreSQL | 14+ (recommended) |
| Nginx | For production |
-
Clone the repository
git clone https://github.com/naravid19/mytree-journal.git cd mytree-journal -
Set up the backend
# Create virtual environment (recommended) python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate # Install dependencies pip install -r requirements.txt # Run migrations python manage.py migrate
-
Set up the frontend
cd mytree-frontend npm install cd ..
Create .env in the project root:
DJANGO_ALLOWED_HOSTS=localhost,127.0.0.1,api.example.comCreate mytree-frontend/.env.local:
NEXT_PUBLIC_FRONTEND_ORIGIN=https://www.example.com
NEXT_PUBLIC_API_BASE_URL=https://api.example.com
NEXT_PUBLIC_MEDIA_DOMAIN=api.example.comOption 1: One-click (Windows)
# Double-click start_app.batOption 2: Manual
# Terminal 1: Backend
python manage.py runserver
# Terminal 2: Frontend
cd mytree-frontend
npm run devThen open http://localhost:3000 in your browser.
| Route | Description |
|---|---|
/ |
Dashboard - View and manage all trees |
/strains |
Manage plant strains |
/batches |
Manage cultivation batches |
/tree/[id] |
Public tree detail page |
/api/ |
REST API documentation |
- Strain: Name, description, genetics information
- Batch: Code, description, start date
- Tree: Comprehensive plant data with relationships
- Images: JPEG, PNG, WebP (auto-thumbnails)
- Documents: PDF attachments
- Storage: Organized in
media/tree_images/andmedia/tree_documents/
See the Nginx configuration example for production deployment.
Key features:
- Static & media file serving
- API reverse proxy
- Security headers
- HTTPS support (add your SSL config)
- π¨ Design system (Claymorphism + Bento Grid)
- π§ Clean code refactoring
- β‘ Performance optimizations (useMemo, useCallback)
- π Authentication & user management
- π Advanced search & filtering
- π± Progressive Web App (PWA)
- π₯ Multi-user collaboration
- π Analytics dashboard
See the open issues for a full list of proposed features.
Contributions are what make the open-source community amazing! Any contributions are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.
Project Link: https://github.com/naravid19/mytree-journal
