Rewriting and file structure of bitiso.org (BitTorrent indexer)

Hi everyone !

My first post here, I thought it was a good place to show of my long date project
bitiso.org.

It’s a BitTorrent indexer with aim to index all free and opensource content and especially ISO images of Linux, BSD and so on

Now it’s time to rewrite it from scratch to bring modular approach.

You can show the code structure there that is not modular, eveything in torrent/

bitiso
├── asgi.py
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
torrent/
├── admin.py
├── apps.py
├── bencodepy
├── forms.py
├── __init__.py
├── management
│   ├── commands
│   │   ├── createtorrent.py
│   │   ├── download_torrent.py
│   │   ├── import_torrent.py
├── models
├── models.py
├── ratelimit.py
├── serializers.py
├── services
├── signals.py
├── static
│   ├── css
│   ├── img
│   └── js
├── templates
│   ├── admin
│   └── torrent
├── test
│   └── scraper.py
├── tests.py
├── urls.py
├── utils
├── utils.py
├── views
└── views.py

Now I’ll build like that to bring this functionality

  • Rewrite the project by reuse current models.py
  • Manage account
  • Manage torrent
  • Search engine
  • Ratio tracking
  • Reward
  • Comments torrent
  • Vote
  • Moderation / ban / staff admin backend
  • Statistics
  • GPG signature

ChatGPT help me with software design in general and particulary on django, but I want to share this project with you guys real human :slight_smile:

So the future layout will be something like:


bitiso/
├── bitiso/                       # Core project files (settings, urls, wsgi, etc.)
│   ├── settings.py               # Main project settings (includes language and database settings)
│   ├── urls.py                   # Main URL configuration for the project
│   ├── wsgi.py                   # WSGI configuration for production
│   └── asgi.py                   # ASGI configuration for async support
├── accounts/                     # User authentication, registration, and account management
│   ├── models.py                 # Custom user model (basic user info, authentication-related fields)
│   ├── views.py                  # Views for registration, login, password reset, and 2FA
│   ├── forms.py                  # Custom forms for user registration and login
│   ├── urls.py                   # URL routing for account-related views
│   ├── templates/                # HTML templates for login, registration, etc.
│   └── signals.py                # Signals for handling post-registration events (e.g., sending welcome email)
├── torrents/                     # Torrent upload, metadata, browsing, and management
│   ├── models/
│   │   ├── __init__.py           # Import and manage all models centrally
│   │   ├── torrent.py            # Core Torrent model
│   │   ├── tracker.py            # Tracker model (external torrent trackers)
│   │   ├── tracker_stat.py       # TrackerStat model for seeds, leeches, completes
│   │   ├── category.py           # Category model for organizing torrents
│   │   ├── project.py            # Project model (Debian, Ubuntu, etc.)
│   ├── views.py                  # Torrent upload, search, and management views
│   ├── forms.py                  # Forms for uploading and editing torrents
│   ├── filters.py                # Torrent search and filtering logic (categories, tags)
│   ├── urls.py                   # URL routing for torrent-related views
│   ├── templates/                # Templates for displaying and managing torrents
├── user_profiles/                # User profiles, upload/download stats, bonus points, and ratios
│   ├── models.py                 # User profile models, including stats, ratios, and bonus points
│   ├── views.py                  # Views for displaying and managing user profiles and stats
│   ├── templates/                # Templates for user profile pages
│   ├── urls.py                   # URL routing for profile-related views
├── moderation/                   # Staff/admin tools for moderation and site management
│   ├── models.py                 # Models for report handling, bans, and admin actions
│   ├── views.py                  # Views for handling moderation tasks (reports, bans)
│   ├── templates/                # Templates for moderation pages (admin stats, review queues)
│   └── urls.py                   # URL routing for moderation tools
├── pages/                        # Dynamic page management for frontend (replaces static pages)
│   ├── models.py                 # Page models for managing frontend content (e.g., Home, About)
│   ├── views.py                  # Views for rendering dynamic pages with multilingual support
│   ├── templates/                # Templates for dynamic pages
│   └── urls.py                   # URL routing for dynamic page views
├── gpg/                          # Handles GPG signing and trust for users and torrents
│   ├── models.py                 # Models for GPG keys, signatures, and trust relationships
│   ├── views.py                  # Views for key management, torrent signing, and verification
│   ├── services.py               # Logic for generating keys, signing torrents, and verifying signatures
│   ├── forms.py                  # Forms for managing GPG keys and signing torrents
│   ├── templates/                # Templates for GPG-related actions (uploading keys, signing torrents)
│   └── urls.py                   # URL routing for GPG-related actions
├── static/                       # Static files (CSS, JavaScript, images)
├── media/                        # Media files (uploaded torrents, images)
└── manage.py                     # Django’s management script```

What do you think about this redesign ?
All any insight from you is welcome
I’m enjoying to share this with you and the future progress

Regards