A Django-based peer-to-peer classified marketplace platform where users can list items for sale, browse products, and communicate directly with sellers.
- User Authentication: Sign up, login, and account management
- Item Management: Create, edit, and delete product listings
- Categories: Organize items by categories
- Image Support: Upload product images with Pillow
- Direct Messaging: In-app conversations between buyers and sellers
- User Dashboard: Personal dashboard for managing listings
- Contact Form: Get in touch functionality
puddle/
βββ core/ # Core functionality (auth, landing page, contact)
βββ item/ # Item/Product management system
βββ conversation/ # Direct messaging between users
βββ dashboard/ # User dashboard and profiles
βββ puddle/ # Main project settings and configuration
βββ media/ # User uploaded content (images)
βββ requirements.txt # Python dependencies
βββ manage.py # Django management script
βββ db.sqlite3 # Local development database
βββ .gitignore # Git ignore rules
- Backend: Django 5.2.9
- Database: SQLite (development), PostgreSQL (production recommended)
- Image Processing: Pillow 12.0.0
- Python: 3.10+
Django==5.2.9
Pillow==12.0.0
asgiref==3.11.0
sqlparse==0.5.4
python-dotenv==1.0.1
- Python 3.10 or higher
- pip (Python package manager)
- Virtual environment (recommended)
-
Clone the repository
git clone https://github.com/sharma-sugurthi/puddle.git cd puddle -
Create and activate virtual environment
# On Linux/Mac python3 -m venv env source env/bin/activate # On Windows python -m venv env env\Scripts\activate
-
Install dependencies
pip install -r requirements.txt
-
Set up environment variables
cp .env.example .env # Edit .env and add your SECRET_KEY and other configuration -
Run migrations
python manage.py migrate
-
Create a superuser (admin account)
python manage.py createsuperuser
-
Collect static files (production)
python manage.py collectstatic
-
Run the development server
python manage.py runserver
The application will be available at
http://localhost:8000
Create a .env file in the project root (copy from .env.example):
# Django Configuration
SECRET_KEY=your-secret-key-here-change-in-production
DEBUG=True
# Database (optional - defaults to SQLite)
# DATABASE_URL=sqlite:///db.sqlite3
# Allowed Hosts (comma-separated)
ALLOWED_HOSTS=localhost,127.0.0.1
# Environment
ENVIRONMENT=development- Category: Product categories
- Item: Product listings with images, price, and seller information
- Conversation: Messaging thread between buyers and sellers
- ConversationMessage: Individual messages in a conversation
- User authentication and landing pages
- User dashboard and profile management
# Run development server
python manage.py runserver
# Create migrations
python manage.py makemigrations
# Apply migrations
python manage.py migrate
# Create superuser
python manage.py createsuperuser
# Run tests
python manage.py test
# Access admin panel
# Visit http://localhost:8000/admin after creating superuser/- Home page/login/- User login/signup/- User registration/logout/- User logout/contact/- Contact form
/items/- Browse all items/items/<id>/- Item detail view/items/new/- Create new item/items/<id>/edit/- Edit item/items/<id>/delete/- Delete item
/inbox/- Message inbox/conversations/<id>/- Conversation detail/conversations/new/<item_id>/- Start new conversation
/dashboard/- User dashboard
.envfiles with real credentials- Virtual environment directories (
env/,venv/) - Local database (
db.sqlite3) __pycache__/directories- Sensitive configuration files
These are already covered in .gitignore.
- Set
DEBUG=Falsein.env - Generate a secure
SECRET_KEY - Configure
ALLOWED_HOSTSproperly - Set up database (PostgreSQL recommended)
- Configure email backend
- Enable HTTPS/SSL
- Set up static file serving (whitenoise or CDN)
- Configure CSRF and security middleware
- Set up error logging
- Use environment-specific settings
pip install -r requirements.txtpython manage.py migratepython manage.py collectstatic --noinputchmod +x manage.pyAccess the Django admin panel at /admin/ with your superuser credentials to:
- Manage users
- Manage items and categories
- Manage conversations
- View messages
- Create a feature branch:
git checkout -b feature/your-feature - Commit your changes:
git commit -m 'Add feature' - Push to the branch:
git push origin feature/your-feature - Submit a pull request
This project is open source and available under the MIT License.
- Sugurthi Manisharma - GitHub Profile
For issues, questions, or suggestions, please:
- Check existing issues on GitHub
- Create a new issue with detailed information
- Submit a pull request with fixes
Last Updated: December 2025