1
1
Fork 1
mirror of https://codeberg.org/heathercat123/apiclone.git synced 2026-03-13 18:00:13 -04:00
Mirror of a WIP clone of the Scratch API, ScratchR2, and others made in Django
  • HTML 74.3%
  • JavaScript 11.2%
  • Python 9.2%
  • CSS 5.3%
Find a file
2026-03-13 12:36:26 -04:00
_docs Deprecate custom CSS dir support in editor tips 2026-03-12 18:15:03 -04:00
accounts Add /health views to hosts 2026-03-13 12:36:26 -04:00
apiclone Add /health views to hosts 2026-03-13 12:36:26 -04:00
base_comments Fix clicking comment form while signed out not opening modal 2026-03-09 08:09:05 -04:00
djangobb_forum Fix creating topics without polls 2026-03-07 14:57:30 -05:00
educators Start work on classroom detail page 2026-03-07 19:12:03 -05:00
files Start implementing classrooms 2026-03-06 18:51:20 -05:00
galleries Implement R2 gallery activity view + reinvent the wheel 2026-03-08 15:17:00 -04:00
help Deprecate custom CSS dir support in editor tips 2026-03-12 18:15:03 -04:00
hosts Add /health views to hosts 2026-03-13 12:36:26 -04:00
internalapi Try to get Scratch 2 to like cloud vars 2026-03-11 15:21:58 -04:00
lib Start implementing classrooms 2026-03-06 18:51:20 -05:00
news Lint the whole thing 2026-01-30 17:14:04 -05:00
ngapi Deprecate lib.demo 2026-03-05 09:12:50 -05:00
notifications Match R2 studio update text 2026-03-08 17:56:45 -04:00
pagination Pagination: update "except" syntax 2026-02-20 07:54:40 -05:00
projects Get rid of hack in project/gallery title field 2026-03-07 19:15:31 -05:00
scratch_admin Allow admins to turn regular users into teachers 2026-03-06 19:21:45 -05:00
siteapi Implement removing projects from gallery in R2 2026-03-08 13:47:45 -04:00
static Implement R2 gallery activity view + reinvent the wheel 2026-03-08 15:17:00 -04:00
templates Implement adding projects to gallery in R2 from explore bar 2026-03-08 13:55:31 -04:00
userprofiles Implement profile classes list 2026-03-08 09:20:03 -04:00
.gitignore HttpResponseForbiddened -> PermissionDenied and Teachers stuff 2026-02-26 17:32:04 -05:00
forumindex.py Port forumindex.py from s2forumsdev tree 2026-02-19 17:45:00 -05:00
jinxer.py Add standalone-registration for < 2019 WWW 2026-03-05 08:08:49 -05:00
LICENSE Add LICENSE 2026-01-02 18:36:38 -05:00
manage.py Lint the whole thing 2025-08-09 18:44:00 -04:00
README.md Move hosts url to /hosts 2026-03-01 11:33:19 -05:00
requirements.sh Remove /commit route 2026-03-08 18:00:54 -04:00
requirements.txt Try and fail to get cloud variables working 2026-03-11 14:45:37 -04:00

APIClone

Work in progress recreation of the main Scratch API, projects API, assets API, uploads API and ScratchR2.

Requirements

APIClone requires the following to be installed:

  • Python. Only versions 3.12 and 3.13 were tested, but any version from 3.8 to the latest should work in theory. The rest can be installed using pip install -r requirements.txt.

Usage with Scratch-WWW

  1. Clone APIClone and Scratch-WWW:

    git clone https://codeberg.org/heathercat123/apiclone.git
    git clone --depth=1 --single-branch --branch develop https://github.com/scratchfoundation/scratch-www.git
    cd apiclone
    
  2. Create superuser (admin/ST account): python manage.py createsuperuser

  3. Optional: Collect static files: ```python manage.py collectstatic`` This will create the static_prod directory for production environments.

  4. Start APIClone: python manage.py runserver 8000

  5. Switch to another terminal window.

  6. Install Scratch-WWW's dependencies and translations:

    cd scratch-www
    npm install
    npm run translate
    
  7. Start Scratch-WWW:

    API_HOST=http://localhost:8000/hosts/api \
    ASSET_HOST=http://localhost:8000/hosts/assets \
    BACKPACK_HOST=http://localhost:8000/hosts/backpack \
    CLOUDDATA_HOST=http:/localhost:8000/hosts/clouddata \
    PROJECT_HOST=http://localhost:8000/hosts/projects \
    STATIC_HOST=http://localhost:8000/hosts/uploads \
    FALLBACK=http://localhost:8000 \
    npm start
    

You can now open http://localhost:8333 in a web browser and enjoy Scratch-WWW with APIClone. Note that many elements of the website are hard-coded whereas they should be modifiable by the user, such as the home page's "What's Happening" box. Quite a few pages and API endpoints are also missing. Both of these are either currently being worked on or this project may randomly have gotten abandoned. I love life.

Standalone usage

  1. Clone APIClone:

    git clone https://codeberg.org/heathercat123/apiclone.git
    cd apiclone
    
  2. Create superuser (admin/ST account): python manage.py createsuperuser

  3. Optional: Collect static files: ```python manage.py collectstatic`` This will create the static_prod directory for production environments.

  4. Create a file in the apiclone subdirectory called local_settings.py:

    from .settings import *
    SCRATCHR2_ONLY = True
    
  5. Start APIClone: python manage.py runserver 8000

You can now open http://localhost:8333 in a web browser and enjoy the good old Scratch 2.0 website. Note that many elements of the website are hard-coded whereas they should be modifiable by the user. Quite a few pages and functionality are also missing. Both of these are either currently being worked on or this project may randomly have gotten abandoned. I love life.