Replace all ~1,086 occurrences of Wizamart/wizamart/WIZAMART/WizaMart with Orion/orion/ORION across 184 files. This includes database identifiers, email addresses, domain references, R2 bucket names, DNS prefixes, encryption salt, Celery app name, config defaults, Docker configs, CI configs, documentation, seed data, and templates. Renames homepage-wizamart.html template to homepage-orion.html. Fixes duplicate file_pattern key in api.yaml architecture rule. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
684 lines
17 KiB
Markdown
684 lines
17 KiB
Markdown
# Development Troubleshooting Guide
|
|
|
|
Common development issues and their solutions for the team.
|
|
|
|
---
|
|
|
|
## Table of Contents
|
|
|
|
- [Docker DNS/WiFi Issues (Digital Nomads)](#docker-dnswifi-issues-digital-nomads)
|
|
- [Go to Declaration Not Working (Ctrl+B)](#go-to-declaration-not-working-ctrlb)
|
|
- [Import Errors and Red Underlines](#import-errors-and-red-underlines)
|
|
- [Python Interpreter Issues](#python-interpreter-issues)
|
|
- [Debugging Not Working](#debugging-not-working)
|
|
- [Performance Issues](#performance-issues)
|
|
- [Git Integration Issues](#git-integration-issues)
|
|
- [Database Tool Issues](#database-tool-issues)
|
|
- [Frontend Asset Loading Issues](#frontend-asset-loading-issues)
|
|
|
|
---
|
|
|
|
## Docker DNS/WiFi Issues (Digital Nomads)
|
|
|
|
### Problem
|
|
|
|
When using Docker on Linux (Ubuntu/Xubuntu), the `docker0` bridge network interface can interfere with DNS resolution, causing:
|
|
|
|
- Hotel/public WiFi captive portals not loading
|
|
- DNS lookups failing or timing out
|
|
- Internet connectivity issues when Docker is running
|
|
- WiFi works fine until Docker starts
|
|
|
|
This happens because Docker's bridge network (`docker0`) can take priority over your WiFi connection for DNS resolution.
|
|
|
|
### Solution: Lower docker0 Priority (Recommended)
|
|
|
|
This solution lets Docker work normally while ensuring your WiFi DNS takes priority. Perfect for digital nomads working from hotels, cafes, and co-working spaces.
|
|
|
|
**Step 1: Create the NetworkManager dispatcher script**
|
|
|
|
```bash
|
|
sudo tee /etc/NetworkManager/dispatcher.d/99-docker-dns-fix << 'EOF'
|
|
#!/bin/bash
|
|
# Lower docker0 metric so WiFi takes priority for DNS
|
|
# This prevents Docker from interfering with hotel/public WiFi captive portals
|
|
if [ "$1" = "docker0" ]; then
|
|
ip route del default via 172.17.0.1 dev docker0 2>/dev/null || true
|
|
fi
|
|
EOF
|
|
```
|
|
|
|
**Step 2: Make it executable**
|
|
|
|
```bash
|
|
sudo chmod +x /etc/NetworkManager/dispatcher.d/99-docker-dns-fix
|
|
```
|
|
|
|
**Step 3: Restart NetworkManager**
|
|
|
|
```bash
|
|
sudo systemctl restart NetworkManager
|
|
```
|
|
|
|
**Step 4: Verify it works**
|
|
|
|
```bash
|
|
# Start Docker
|
|
sudo systemctl start docker
|
|
|
|
# Check routes - docker0 should NOT have a default route
|
|
ip route | grep docker0
|
|
# Should return nothing or non-default routes only
|
|
|
|
# Your WiFi should still work
|
|
ping -c 3 google.com
|
|
```
|
|
|
|
### Alternative Solutions
|
|
|
|
#### Option A: Use Google DNS (Simple but less flexible)
|
|
|
|
If you don't need hotel captive portal DNS:
|
|
|
|
```bash
|
|
sudo mkdir -p /etc/docker
|
|
sudo tee /etc/docker/daemon.json << 'EOF'
|
|
{
|
|
"dns": ["8.8.8.8", "8.8.4.4"],
|
|
"dns-opts": ["ndots:1"]
|
|
}
|
|
EOF
|
|
sudo systemctl restart docker
|
|
```
|
|
|
|
!!! warning "Captive Portals"
|
|
This option uses hardcoded Google DNS, which means hotel WiFi captive portals
|
|
(login pages) may not work properly since they rely on DNS hijacking.
|
|
|
|
#### Option B: Stop Docker when not in use
|
|
|
|
```bash
|
|
# When you need WiFi without Docker interference
|
|
sudo systemctl stop docker
|
|
sudo ip link set docker0 down
|
|
|
|
# When you need Docker again
|
|
sudo systemctl start docker
|
|
```
|
|
|
|
### Installing Docker on Xubuntu/Ubuntu
|
|
|
|
If you haven't installed Docker yet:
|
|
|
|
```bash
|
|
# Update package index
|
|
sudo apt update
|
|
|
|
# Install prerequisites
|
|
sudo apt install -y ca-certificates curl gnupg
|
|
|
|
# Add Docker's official GPG key
|
|
sudo install -m 0755 -d /etc/apt/keyrings
|
|
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
|
sudo chmod a+r /etc/apt/keyrings/docker.gpg
|
|
|
|
# Add the repository
|
|
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
|
|
|
# Install Docker
|
|
sudo apt update
|
|
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
|
|
|
# Add your user to docker group (run docker without sudo)
|
|
sudo usermod -aG docker $USER
|
|
|
|
# Apply the DNS fix BEFORE using Docker
|
|
sudo tee /etc/NetworkManager/dispatcher.d/99-docker-dns-fix << 'EOF'
|
|
#!/bin/bash
|
|
if [ "$1" = "docker0" ]; then
|
|
ip route del default via 172.17.0.1 dev docker0 2>/dev/null || true
|
|
fi
|
|
EOF
|
|
sudo chmod +x /etc/NetworkManager/dispatcher.d/99-docker-dns-fix
|
|
|
|
# Log out and back in for docker group, then verify
|
|
docker run hello-world
|
|
```
|
|
|
|
### Using Docker with this Project
|
|
|
|
After installing Docker with the DNS fix:
|
|
|
|
```bash
|
|
# Start PostgreSQL for development
|
|
make docker-up
|
|
|
|
# Run tests (auto-starts test database)
|
|
make test
|
|
|
|
# Stop when done
|
|
make docker-down
|
|
```
|
|
|
|
---
|
|
|
|
## Go to Declaration Not Working (Ctrl+B)
|
|
|
|
### Problem
|
|
|
|
When you press **Ctrl+B** (or Cmd+B on Mac) on a function, class, or variable, PyCharm shows:
|
|
- "Cannot find declaration to go to"
|
|
- No navigation occurs
|
|
- Imports are marked as unresolved even though code runs fine
|
|
|
|
**Example:**
|
|
```python
|
|
from app.services.admin_audit_service import admin_audit_service
|
|
|
|
# Ctrl+B on get_audit_logs doesn't work
|
|
logs = admin_audit_service.get_audit_logs(db, filters)
|
|
```
|
|
|
|
### Solution 1: Configure Source Roots (Most Common Fix)
|
|
|
|
PyCharm needs to know your project structure:
|
|
|
|
1. **Mark project root as Sources Root:**
|
|
- Right-click on project root folder (`letzshop-product-import`)
|
|
- Select **"Mark Directory as"** → **"Sources Root"**
|
|
- The folder icon should turn blue
|
|
|
|
2. **Via Project Structure settings:**
|
|
- **File** → **Settings** (Ctrl+Alt+S)
|
|
- Navigate to **Project: letzshop-product-import** → **Project Structure**
|
|
- Select your project root directory
|
|
- Click the **"Sources"** button at the top
|
|
- Click **Apply** → **OK**
|
|
|
|
3. **Verify the change:**
|
|
- Your project root should now have a blue folder icon
|
|
- The `.idea` folder should show the source root is configured
|
|
|
|
### Solution 2: Verify Python Interpreter
|
|
|
|
Ensure PyCharm is using the correct virtual environment:
|
|
|
|
1. **Check current interpreter:**
|
|
- **File** → **Settings** → **Project** → **Python Interpreter**
|
|
- Should show: `/home/samir/PycharmProjects/letzshop-product-import/.venv/bin/python`
|
|
|
|
2. **If wrong interpreter:**
|
|
- Click the gear icon → **Add**
|
|
- Select **"Existing environment"**
|
|
- Navigate to: `[PROJECT_ROOT]/.venv/bin/python`
|
|
- Click **OK**
|
|
|
|
3. **Wait for indexing:**
|
|
- Bottom right corner will show "Indexing..."
|
|
- Wait for it to complete before testing
|
|
|
|
### Solution 3: Invalidate Caches
|
|
|
|
PyCharm's index might be corrupted:
|
|
|
|
1. **File** → **Invalidate Caches...**
|
|
2. Select all checkboxes:
|
|
- ✅ Invalidate and Restart
|
|
- ✅ Clear file system cache and Local History
|
|
- ✅ Clear downloaded shared indexes
|
|
3. Click **"Invalidate and Restart"**
|
|
4. **Wait 2-5 minutes** for re-indexing after restart
|
|
|
|
### Solution 4: Reimport Project
|
|
|
|
If nothing else works, rebuild the project structure:
|
|
|
|
1. **Close PyCharm**
|
|
2. **Delete PyCharm's cache folder:**
|
|
```bash
|
|
rm -rf .idea/
|
|
```
|
|
3. **Reopen project in PyCharm:**
|
|
- **File** → **Open**
|
|
- Select project folder
|
|
- Let PyCharm recreate `.idea/` folder
|
|
4. **Reconfigure:**
|
|
- Set Python interpreter
|
|
- Mark source roots
|
|
- Wait for indexing
|
|
|
|
### Solution 5: Check .idea/workspace.xml
|
|
|
|
Sometimes workspace configuration gets corrupted:
|
|
|
|
```bash
|
|
# Close PyCharm first
|
|
rm .idea/workspace.xml
|
|
# Reopen PyCharm - it will regenerate this file
|
|
```
|
|
|
|
---
|
|
|
|
## Import Errors and Red Underlines
|
|
|
|
### Problem
|
|
|
|
Imports show red underlines and errors like:
|
|
- "Unresolved reference"
|
|
- "No module named 'app'"
|
|
- Code runs fine but PyCharm shows errors
|
|
|
|
### Solution
|
|
|
|
1. **Check Sources Root** (see above)
|
|
|
|
2. **Verify `__init__.py` files exist:**
|
|
```bash
|
|
# All package directories need __init__.py
|
|
ls -la app/__init__.py
|
|
ls -la app/services/__init__.py
|
|
ls -la app/api/__init__.py
|
|
```
|
|
|
|
3. **Add project root to PYTHONPATH:**
|
|
- **File** → **Settings** → **Project** → **Project Structure**
|
|
- Right-click project root → **"Mark as Sources Root"**
|
|
|
|
4. **Enable namespace packages** (if using PEP 420):
|
|
- **File** → **Settings** → **Editor** → **Code Style** → **Python**
|
|
- Check "Support namespace packages"
|
|
|
|
---
|
|
|
|
## Python Interpreter Issues
|
|
|
|
### Problem
|
|
|
|
- "No Python interpreter configured"
|
|
- Wrong Python version
|
|
- Missing packages even though they're installed
|
|
|
|
### Solution
|
|
|
|
1. **Verify virtual environment:**
|
|
```bash
|
|
# In terminal
|
|
which python # Should show .venv/bin/python
|
|
python --version # Should show Python 3.13.x
|
|
```
|
|
|
|
2. **Configure in PyCharm:**
|
|
- **File** → **Settings** → **Project** → **Python Interpreter**
|
|
- Click gear icon → **Add**
|
|
- Select **"Existing Environment"**
|
|
- Choose: `[PROJECT_ROOT]/.venv/bin/python`
|
|
|
|
3. **Refresh interpreter packages:**
|
|
- In Python Interpreter settings
|
|
- Click refresh icon (⟳)
|
|
- Wait for packages to reload
|
|
|
|
4. **Reinstall packages if needed:**
|
|
```bash
|
|
source .venv/bin/activate
|
|
pip install -r requirements.txt
|
|
pip install -r requirements-dev.txt
|
|
```
|
|
|
|
---
|
|
|
|
## Debugging Not Working
|
|
|
|
### Problem
|
|
|
|
- Breakpoints are grayed out
|
|
- Debugger doesn't stop at breakpoints
|
|
- "Debugger is not attached"
|
|
|
|
### Solution 1: Check Run Configuration
|
|
|
|
1. **Edit configuration:**
|
|
- Top right → Edit Configurations
|
|
- Should use "Python" configuration type
|
|
- Script path should point to your main file
|
|
- Interpreter should be your virtual environment
|
|
|
|
2. **For FastAPI/Uvicorn:**
|
|
- Module: `uvicorn`
|
|
- Parameters: `main:app --reload`
|
|
- Working directory: Project root
|
|
|
|
### Solution 2: Enable Gevent/Asyncio Support
|
|
|
|
For async code (FastAPI):
|
|
|
|
1. **File** → **Settings** → **Build, Execution, Deployment** → **Python Debugger**
|
|
2. Check **"Gevent compatible"** or **"Asyncio compatible"**
|
|
3. Restart debugger
|
|
|
|
### Solution 3: Check Breakpoint Settings
|
|
|
|
Right-click on breakpoint (red dot):
|
|
- Ensure "Enabled" is checked
|
|
- Check "Suspend" is set to "All"
|
|
- Remove any conditions if not needed
|
|
|
|
---
|
|
|
|
## Performance Issues
|
|
|
|
### Problem
|
|
|
|
- PyCharm is slow or freezing
|
|
- High CPU/memory usage
|
|
- Indexing takes forever
|
|
|
|
### Solution 1: Exclude Unnecessary Directories
|
|
|
|
Exclude directories PyCharm doesn't need to index:
|
|
|
|
1. **File** → **Settings** → **Project** → **Project Structure**
|
|
2. **Mark as "Excluded":**
|
|
- `.venv` (if not already)
|
|
- `node_modules`
|
|
- `.pytest_cache`
|
|
- `__pycache__`
|
|
- `htmlcov`
|
|
- `site` (mkdocs build output)
|
|
|
|
3. **Right-click these folders in Project view:**
|
|
- **Mark Directory as** → **Excluded**
|
|
|
|
### Solution 2: Increase Memory
|
|
|
|
1. **Help** → **Change Memory Settings**
|
|
2. Increase heap size to **2048 MB** or higher
|
|
3. Restart PyCharm
|
|
|
|
### Solution 3: Disable Unused Plugins
|
|
|
|
1. **File** → **Settings** → **Plugins**
|
|
2. Disable plugins you don't use
|
|
3. Keep essential: Python, Git, Database, Markdown
|
|
4. Restart PyCharm
|
|
|
|
### Solution 4: Pause Indexing
|
|
|
|
If you need to work immediately:
|
|
|
|
1. **File** → **Pause Indexing**
|
|
2. Do your work
|
|
3. **Resume Indexing** when convenient
|
|
|
|
---
|
|
|
|
## Git Integration Issues
|
|
|
|
### Problem
|
|
|
|
- Git operations fail
|
|
- "Cannot run git" errors
|
|
- Changes not detected
|
|
|
|
### Solution 1: Configure Git Executable
|
|
|
|
1. **File** → **Settings** → **Version Control** → **Git**
|
|
2. **Path to Git executable:**
|
|
- Linux/Mac: `/usr/bin/git`
|
|
- Windows: `C:\Program Files\Git\bin\git.exe`
|
|
3. Click **"Test"** to verify
|
|
4. Click **OK**
|
|
|
|
### Solution 2: Check Git Root
|
|
|
|
1. **File** → **Settings** → **Version Control**
|
|
2. Verify your project root is listed
|
|
3. If missing, click **+** and add it
|
|
|
|
### Solution 3: Refresh VCS
|
|
|
|
1. **VCS** → **Refresh File Status**
|
|
2. Or: **Git** → **Refresh**
|
|
3. Or press: **Ctrl+F5**
|
|
|
|
---
|
|
|
|
## Database Tool Issues
|
|
|
|
### Problem
|
|
|
|
- Can't connect to PostgreSQL database
|
|
- "Connection refused" errors
|
|
- Tables not showing
|
|
|
|
### Solution 1: Verify Database Connection
|
|
|
|
1. **Database** tool window (usually right side)
|
|
2. Click **+** → **Data Source** → **PostgreSQL**
|
|
3. **Configure:**
|
|
```
|
|
Host: localhost
|
|
Port: 5432
|
|
Database: orion_db
|
|
User: [from .env file]
|
|
Password: [from .env file]
|
|
```
|
|
4. Click **"Test Connection"**
|
|
5. Download drivers if prompted
|
|
|
|
### Solution 2: Check Database is Running
|
|
|
|
```bash
|
|
# Check if PostgreSQL is running
|
|
sudo systemctl status postgresql
|
|
|
|
# Start if not running
|
|
sudo systemctl start postgresql
|
|
```
|
|
|
|
### Solution 3: Verify .env Configuration
|
|
|
|
```bash
|
|
# Check your .env file
|
|
cat .env | grep DATABASE
|
|
|
|
# Should show something like:
|
|
DATABASE_URL=postgresql://user:password@localhost:5432/letzshop_db
|
|
```
|
|
|
|
---
|
|
|
|
## Frontend Asset Loading Issues
|
|
|
|
### Problem
|
|
|
|
- Tailwind CSS styles not loading
|
|
- Alpine.js not initializing
|
|
- Frontend pages look unstyled
|
|
- Console errors about missing CSS/JS files
|
|
- App doesn't work offline
|
|
|
|
### Solution 1: Verify CDN Fallback Files Exist
|
|
|
|
All frontends use CDN with local fallback. Check that local copies exist:
|
|
|
|
```bash
|
|
# From project root
|
|
ls -lh static/shared/css/tailwind.min.css
|
|
ls -lh static/shared/js/lib/alpine.min.js
|
|
```
|
|
|
|
**Expected output:**
|
|
```
|
|
-rw-r--r-- 1 user user 2.9M static/shared/css/tailwind.min.css
|
|
-rw-r--r-- 1 user user 44K static/shared/js/lib/alpine.min.js
|
|
```
|
|
|
|
**If files are missing:**
|
|
```bash
|
|
# Download Tailwind CSS
|
|
cd static/shared/css
|
|
curl -o tailwind.min.css https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css
|
|
|
|
# Download Alpine.js
|
|
cd ../js/store
|
|
curl -o alpine.min.js https://cdn.jsdelivr.net/npm/alpinejs@3.13.3/dist/cdn.min.js
|
|
```
|
|
|
|
### Solution 2: Check Browser Console
|
|
|
|
Open DevTools (F12) and check the Console tab for errors:
|
|
|
|
**Common errors:**
|
|
- `GET http://localhost:8000/static/shared/css/tailwind.min.css [404 Not Found]` → File missing
|
|
- `Alpine.js CDN failed, loading local copy...` → Normal fallback behavior
|
|
- `Uncaught ReferenceError: Alpine is not defined` → Alpine.js failed to load
|
|
|
|
### Solution 3: Test CDN Fallback Behavior
|
|
|
|
To verify fallback works correctly:
|
|
|
|
1. **Start application:**
|
|
```bash
|
|
uvicorn app.main:app --reload
|
|
```
|
|
|
|
2. **Test with CDN blocked:**
|
|
- Open browser DevTools (F12)
|
|
- Go to Network tab
|
|
- Add request blocking rule for `cdn.jsdelivr.net`
|
|
- Reload page
|
|
|
|
3. **Verify fallback:**
|
|
- Check Console for: `⚠️ Alpine.js CDN failed, loading local copy...`
|
|
- Check Network tab shows local files loaded
|
|
- Page should still work normally
|
|
|
|
### Solution 4: Verify Static Files Mounting
|
|
|
|
Check that FastAPI is serving static files correctly:
|
|
|
|
**In `app/main.py`:**
|
|
```python
|
|
from fastapi.staticfiles import StaticFiles
|
|
|
|
app.mount("/static", StaticFiles(directory="static"), name="static")
|
|
```
|
|
|
|
**Test static file serving:**
|
|
```bash
|
|
# With app running, test directly:
|
|
curl http://localhost:8000/static/shared/css/tailwind.min.css | head -n 5
|
|
curl http://localhost:8000/static/shared/js/lib/alpine.min.js | head -n 5
|
|
```
|
|
|
|
### Solution 5: File Permissions
|
|
|
|
If files exist but return 403 Forbidden:
|
|
|
|
```bash
|
|
# Fix permissions
|
|
chmod 644 static/shared/css/tailwind.min.css
|
|
chmod 644 static/shared/js/lib/alpine.min.js
|
|
chmod 755 static/shared/css
|
|
chmod 755 static/shared/js/store
|
|
```
|
|
|
|
### Solution 6: For Offline Development
|
|
|
|
If working completely offline, the CDN will always fail. Verify:
|
|
|
|
1. **Console shows fallback message** (expected behavior)
|
|
2. **Local files load successfully**
|
|
3. **Page functions normally**
|
|
|
|
**To suppress CDN warnings when offline:**
|
|
- Accept that CDN will fail (expected)
|
|
- Fallback mechanism handles it automatically
|
|
- Or modify templates to use local-only (see [CDN Fallback Strategy](../frontend/cdn-fallback-strategy.md#optimization-strategies))
|
|
|
|
### Solution 7: Network Issues
|
|
|
|
If both CDN and local files fail intermittently:
|
|
|
|
1. **Check browser cache:**
|
|
- Open DevTools → Network tab
|
|
- Check "Disable cache" option
|
|
- Hard reload: Ctrl+Shift+R
|
|
|
|
2. **Clear browser cache completely:**
|
|
- Browser Settings → Privacy → Clear browsing data
|
|
- Select "Cached images and files"
|
|
- Clear data
|
|
|
|
3. **Check for firewall/proxy issues:**
|
|
```bash
|
|
# Test CDN accessibility
|
|
curl https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css | head -n 5
|
|
```
|
|
|
|
### Related Documentation
|
|
|
|
See [CDN Fallback Strategy](../frontend/cdn-fallback-strategy.md) for complete details on:
|
|
- How the fallback mechanism works
|
|
- Updating local asset files
|
|
- Production deployment considerations
|
|
- Air-gapped deployment setup
|
|
|
|
---
|
|
|
|
## Quick Checklist for New Developers
|
|
|
|
When setting up PyCharm for the first time:
|
|
|
|
- [ ] Clone repository
|
|
- [ ] Create virtual environment: `python -m venv .venv`
|
|
- [ ] Activate: `source .venv/bin/activate`
|
|
- [ ] Install dependencies: `pip install -r requirements.txt`
|
|
- [ ] Open project in PyCharm
|
|
- [ ] Configure Python interpreter (`.venv/bin/python`)
|
|
- [ ] Mark project root as Sources Root
|
|
- [ ] Exclude `.venv`, `.pytest_cache`, `__pycache__` directories
|
|
- [ ] Configure Git executable
|
|
- [ ] Configure database connection
|
|
- [ ] Wait for indexing to complete
|
|
- [ ] Test: Ctrl+B on an import should work
|
|
|
|
---
|
|
|
|
## Still Having Issues?
|
|
|
|
### Check PyCharm Logs
|
|
|
|
1. **Help** → **Show Log in Explorer/Finder**
|
|
2. Look for errors in `idea.log`
|
|
3. Search for "ERROR" or "Exception"
|
|
|
|
### Enable Debug Logging
|
|
|
|
1. **Help** → **Diagnostic Tools** → **Debug Log Settings**
|
|
2. Add: `#com.intellij.python`
|
|
3. Reproduce the issue
|
|
4. Check logs
|
|
|
|
### Report to Team
|
|
|
|
If the issue persists:
|
|
|
|
1. Screenshot the error
|
|
2. Share PyCharm version: **Help** → **About**
|
|
3. Share Python version: `python --version`
|
|
4. Share OS: `uname -a` (Linux/Mac) or `ver` (Windows)
|
|
5. Post in team chat with:
|
|
- What you were trying to do
|
|
- What error you got
|
|
- What you've tried so far
|
|
|
|
---
|
|
|
|
## Related Documentation
|
|
|
|
- [PyCharm Make Configuration](pycharm-configuration-make.md) - Configure Make with virtual environment
|
|
- [Contributing Guide](contributing.md) - Development workflow
|
|
- [Database Migrations](migration/database-migrations.md) - Working with Alembic
|