|
|
%!s(int64=3) %!d(string=před) měsíci | |
|---|---|---|
| admin_frontend | %!s(int64=3) %!d(string=před) měsíci | |
| api | %!s(int64=3) %!d(string=před) měsíci | |
| billing | %!s(int64=3) %!d(string=před) měsíci | |
| cms | %!s(int64=3) %!d(string=před) měsíci | |
| ecoloop | %!s(int64=3) %!d(string=před) měsíci | |
| frontend | %!s(int64=3) %!d(string=před) měsíci | |
| locale | %!s(int64=3) %!d(string=před) měsíci | |
| orgs | %!s(int64=3) %!d(string=před) měsíci | |
| posts | %!s(int64=3) %!d(string=před) měsíci | |
| public_frontend | %!s(int64=3) %!d(string=před) měsíci | |
| recycle_core | %!s(int64=3) %!d(string=před) měsíci | |
| settings | %!s(int64=3) %!d(string=před) měsíci | |
| static | %!s(int64=3) %!d(string=před) měsíci | |
| templates | %!s(int64=3) %!d(string=před) měsíci | |
| theme | %!s(int64=3) %!d(string=před) měsíci | |
| translations | %!s(int64=3) %!d(string=před) měsíci | |
| .gitignore | %!s(int64=3) %!d(string=před) měsíci | |
| AGENTS.md | %!s(int64=3) %!d(string=před) měsíci | |
| Dockerfile | %!s(int64=3) %!d(string=před) měsíci | |
| Procfile.tailwind | %!s(int64=3) %!d(string=před) měsíci | |
| README.md | %!s(int64=3) %!d(string=před) měsíci | |
| docker-compose.yml | %!s(int64=3) %!d(string=před) měsíci | |
| er.dot | %!s(int64=3) %!d(string=před) měsíci | |
| erd.pdf | %!s(int64=3) %!d(string=před) měsíci | |
| erd.png | %!s(int64=3) %!d(string=před) měsíci | |
| manage.py | %!s(int64=3) %!d(string=před) měsíci | |
| package-lock.json | %!s(int64=3) %!d(string=před) měsíci | |
| package.json | %!s(int64=3) %!d(string=před) měsíci | |
| project_scopes | %!s(int64=3) %!d(string=před) měsíci | |
| requirements.txt | %!s(int64=3) %!d(string=před) měsíci | |
| seq.png | %!s(int64=3) %!d(string=před) měsíci | |
| seq.txt | %!s(int64=3) %!d(string=před) měsíci | |
| seq_001.png | %!s(int64=3) %!d(string=před) měsíci |
Ecoloop is a Django + DRF backend for recycling businesses and factories to manage pickups, pricing, invoices/payouts, and a bidding marketplace for scrap lots. It supports multi-organization setups, JWT auth, and a Tailwind-powered UI layer.
.env and set SECRET_KEY, DEBUG, DB_*, ALLOWED_HOSTSdocker-compose up --build (web on http://localhost:8024)python manage.py migratepython manage.py runserverpython manage.py seed_ecoloop/api/schema/swagger-ui/python manage.py migrate — apply DB migrationspython manage.py seed_ecoloop — seed demo org, users, materials, pickup, weigh ticket, invoice, listing/bidpython manage.py ecoloop_auto_close_award — auto-close/award expired listingsecoloop/settings.py via django.contrib.sites and SITE_ID..env includes defaults for local hosts: ALLOWED_HOSTS=localhost,127.0.0.1,.lvh.me.env CSRF for Docker port: CSRF_TRUSTED_ORIGINS=http://localhost:8024,http://*.lvh.me:8024python manage.py migrate (applies Sites tables)alpha.lvh.me and beta.lvh.me.http://alpha.lvh.me:8024 and http://beta.lvh.me:8024.get_current_site(request) or adding a ForeignKey to Site.ecoloop/ settings and URLs; api/ public endpoints; recycle_core/ domain models/APIstemplates/, static/, media/; Entrypoints: manage.py, docker-compose.yml, Dockerfileen_route, collecting, at_facility).WeighTicket and WeighLines per material; optional finalize.ScrapListingInvite.ecoloop_auto_close_award); accepts top qualifying bid, rejects others, creates a PickupOrder.Payout to customer.AuditLog records important actions and metadata.UserProfile per organization./auth/), optional social auth (Google/LINE/Facebook).OrganizationSite./api/, filterable, with custom actions:
pickups/{id}/assign, pickups/{id}/set_statusweigh-tickets/{id}/generate_invoicescrap-listings/{id}/open, scrap-listings/{id}/close, scrap-awards/award-listing/profiles/match/, opportunities/recommend/leaderboard/ (public), leaderboard/me/ (auth)/webadmin/… routes for orgs, billing, recycle core, CMS, settings./api/schema/swagger-ui/.Factory Pickup
PickupOrder, assigns driver, schedules.WeighTicket with material lines.Payment; pickup moves to invoiced/completed.Marketplace Sale
ScrapListing with estimated quantities and a bidding window.ScrapBids.PickupOrder auto‑created.Price Review & Adjustments
PriceListItem sell/buy rates by material/unit.Compliance & Reporting
Documents linked to tickets/invoices.AuditLog for status changes and financial actions./api/schema/swagger-ui/ (interactive), /api/schema/redoc/POST /auth/jwt/create/ (get token)POST /auth/users/ (register), GET /auth/users/me/GET/POST /api/profiles/, GET /api/profiles/match/GET/POST /api/opportunities/, GET /api/opportunities/recommend/GET /api/leaderboard/, GET /api/leaderboard/me//api/organizations//api/material-categories/, /api/materials//api/price-lists/, /api/price-list-items//api/customers/, /api/customer-sites/, /api/service-agreements//api/pickups/ (actions: POST /api/pickups/{id}/assign/, POST /api/pickups/{id}/set_status/)/api/weigh-tickets/ (action: POST /api/weigh-tickets/{id}/generate_invoice/), /api/weigh-lines//api/documents/, /api/audit-logs//api/invoices/, lines: /api/invoice-lines//api/payments/, Payouts: /api/payouts//api/scrap-listings/ (actions: POST /api/scrap-listings/{id}/open/, POST /api/scrap-listings/{id}/close/)/api/scrap-listing-items//api/scrap-bids/ (action: POST /api/scrap-bids/{id}/retract/)POST /api/scrap-awards/award-listing//api/scrap-listing-invites/.env and run DB: docker-compose up --build or python manage.py migrate && runserver.python manage.py seed_ecoloop (creates users manager/manager123, driver/driver123, buyer/buyer123).POST /auth/jwt/create/ with seeded credentials, use Authorization: Bearer <token> for protected endpoints.POST /api/customers/, /api/customer-sites/, /api/materials/.POST /api/pickups/ with organization, customer, site.POST /api/pickups/{id}/assign/ {"driver_id": <user_id>}; confirm status scheduled.POST /api/pickups/{id}/set_status/ → en_route → collecting → at_facility.POST /api/weigh-tickets/ + lines via /api/weigh-lines/.POST /api/weigh-tickets/{id}/generate_invoice/; verify invoice under /api/invoices/ and any payout under /api/payouts/.POST /api/pickups/{id}/set_status/ {"status": "completed"}.POST /api/scrap-listings/ (status defaults to draft).POST /api/scrap-listings/{id}/open/; optionally add invites via /api/scrap-listing-invites/.POST /api/scrap-bids/ with listing, bidder_org, price_total (ensure role and invite if private).POST /api/scrap-listings/{id}/close/ or run python manage.py ecoloop_auto_close_award.POST /api/scrap-awards/award-listing/ {"listing_id": <id>}; verify pickup created and proceed with weighing/invoicing./api/price-lists/, /api/price-list-items/.POST /api/payments/ {"invoice": <id>, "amount": ...}.draft, then rebuild lines (see service regenerate_invoice_for_pickup).Lead and auto‑attach uploaded files as Documents.POST /api/documents/ with file and content object.GET /api/audit-logs/ after actions like assign, set_status, generate_invoice, award.