A production-deployed Flask web application to save, organize, and manage website URLs with smart tagging, search functionality, and PostgreSQL database integration. Live and operational at https://url-manager-project.onrender.com/
- PostgreSQL Integration with Neon.tech for production
- SQLite Fallback for local development
- SQLAlchemy ORM for robust database operations
- Multi-Table Schema with users, URLs, tags, and relationships
- Deployed on Render.com with zero-downtime deployments
- โ Add URLs with automatic title scraping using BeautifulSoup
- ๐ท๏ธ Smart Tagging System with predefined categories (Work, Programming, Research, Personal, News)
- ๐ฆ Archive/Unarchive System for temporary URL storage
- ๐ Advanced Search across titles and URLs with real-time results
- โ URL Validation and error handling
- ๐ Color-coded tags for visual organization (Blue, Green, Purple, Orange, Red)
- ๐ Interactive Tag Sidebar with dropdown URL lists
- โ Remove tags from individual URLs with one click
- ๐ Tag-based filtering and URL grouping
- ๐ Real-time Search with 2-second auto-search delay
- ๐ One-click URL copying with visual feedback
โ ๏ธ Confirmation dialogs for destructive actions- ๐ฑ Responsive design with clean, modern interface
- ๐ฏ Separate views for Active and Archived URLs
- Framework: ๐ Flask (Python)
- Database: ๐ PostgreSQL (Production - Neon.tech) / SQLite (Development)
- ORM: ๐ SQLAlchemy
- URL Processing: ๐ธ๏ธ BeautifulSoup4 for automatic title extraction
- HTTP Requests: ๐ Requests library with custom headers
- URL Validation: โ Validators library
### ๐จ **Frontend**
- **Templating**: Jinja2 with template inheritance
- **Styling**: Custom CSS with color-coded tag system and responsive design
- **Interactivity**: Vanilla JavaScript for tag selection, search, and URL copying
- **Layout**: Flexbox for responsive container and sidebar
## ๐ **Live Deployment**
### **Production Application**
๐ **Live URL**: [https://url-manager-project.onrender.com/](https://url-manager-project.onrender.com/)
### **Production Infrastructure**
- **Platform**: Render.com
- **Database**: Neon.tech PostgreSQL
- **Status**: โ
Fully Operational
- **Uptime**: 24/7 with auto-scaling
## ๐ ๏ธ **Installation & Setup**
### **Local Development**
1. **Clone the repository**
```bash
git clone https://github.com/darshan2456/url_manager_project.git
cd url_manager_project
-
Install dependencies
pip install flask flask-sqlalchemy beautifulsoup4 requests validators
-
Initialize the database
python app.py
Then visit
http://localhost:5000/startto create tables and default tags -
Run the application
python app.py
Visit
http://localhost:5000to use the application
- Connect your GitHub repository to Render
- Set environment variables:
DATABASE_URL: Your Neon PostgreSQL connection string
- Automatic deployment on git push to main branch
- Visit
/startonce to initialize database schema
url_manager_project/
โโโ ๐ app.py # Main Flask application with DB config
โโโ ๐๏ธ url_manager.db # SQLite database (local development)
โโโ ๐จ static/
โ โโโ style.css # Comprehensive styling with responsive design
โ โโโ script.js # Frontend interactions & search functionality
โโโ ๐ templates/
โ โโโ index.html # Main template with tag system & search
โโโ ๐ requirements.txt # Production dependencies
def get_database_uri():
if 'DATABASE_URL' in os.environ:
# Production - PostgreSQL (Render + Neon.tech)
uri = os.environ['DATABASE_URL']
if uri.startswith('postgres://'):
uri = uri.replace('postgres://', 'postgresql://', 1)
return uri
else:
# Development - SQLite (local)
return 'sqlite:///url_manager.db'Visit /start to automatically:
- Create all database tables
- Insert default tags with colors
- Prepare the application for first use
- Enter a valid URL in the input field (e.g.,
https://example.com) - Select relevant tags from the color-coded buttons
- Click "Add URL" - the title will be automatically fetched and saved!
- Real-time Search: Type in the search box - results update automatically
- Search Scope: Searches both active and archived URLs
- Clear Search: Click "Clear" to return to all URLs
- ๐ Visit: Click on any URL to open it in a new tab
- ๐ Copy: Use the "Copy URL" button for quick sharing (turns green when copied)
- ๐ฆ Archive: Click "Archive" to temporarily hide URLs
- ๐ฅ Unarchive: Restore from the archived section
- ๐๏ธ Delete: Remove permanently with confirmation dialog
- โ Remove Tags: Click the ร on any tag to remove it from a URL
- ๐ฏ Filter: Click tags in the sidebar to view related URLs
- ๐ Overview: See tag counts in the sidebar
- ๐จ Visual Organization: Colors help quickly identify categories
- ๐ฝ Dropdown Lists: Click sidebar tags to see all URLs in that category
GET /- Main application interface with searchGET /search- Search functionality with query parametersPOST /add- Add new URL with tags and auto-title fetchingPOST /delete/<id>- Delete URL with confirmationPOST /archive/<id>- Archive URLPOST /unarchive/<id>- Unarchive URLGET /remove-tag/<id>/<tag>- Remove tag from URLGET /start- Initialize database (first-time setup)GET /check-tables- Debug endpoint to verify database setup
- โ Live on Render.com with 24/7 uptime
- โ Neon.tech PostgreSQL for scalable data storage
- โ Environment-based configuration
- โ Port configuration for cloud platforms
- โ Proper database connection handling
- โ Error handling and rollbacks
- Real-time Processing: Auto-searches after 2 seconds of typing
- Comprehensive Search: Matches both URL titles and full URLs
- Separate Results: Shows active and archived results separately
- Result Counts: Displays number of matches in each category
- Quick Clear: Easy return to full URL list
- ๐ฅ User authentication and personal collections
- ๐ Bulk operations for multiple URLs
- ๐ API endpoints for external integrations
โญ Star this repo if you find it useful!
๐ Found a bug? Open an issue on GitHub!
๐ก Have a feature request? We'd love to hear your ideas!
๐ Using the live app? Visit https://url-manager-project.onrender.com/
Built with ๐ Flask + ๐ PostgreSQL + โค๏ธ by Darshan
Successfully deployed on Render.com with Neon.tech database