Skip to content

a social media platform that i made so that means its cool

License

Notifications You must be signed in to change notification settings

jerimiah-smiggins/smiggins

Repository files navigation

smiggins

official discord server: https://discord.gg/tH7QnHApwu

online version (at least for now): https://trinkey.pythonanywhere.com

notice

here at smiggins incorporated (real company trust), we like to promote a kind and inclusive argument. this means that zero racism, sexism, homophobia, etc. will be tolerated in anywhere related to this project, including github issues, the discord server, and the official main instance. if you think that someone violates this and you believe that they are doing something wrong, feel free to reach out to @trinkey. if you don't agree with this, then don't start drama about it, just leave and pretend smiggins doesn't exist.

How can I contribute to this project

If you would like to help translate this website, read this file

If there is a specific thing you want to do, you can make an issue (if an existing doesn't already exist).

Once you finish programming you can create a new fork with your code and then make a pull request with it.

Anyone who gets contributor access to the repository is decided by @trinkey. If you think you are deserving of getting it and don't currently have it, let her know.

Finally, to compile typescript/less, you need to install those npm packages (npm i -g less typescript less-plugin-clean-css). Then, to compile typescript, you can run tsc assuming your working directory in your console is somewhere within this project. To compile less, you can run python compile-less.py in the root directory of this project.

How to run locally

  1. Clone the github repo or download the files

  2. With python, install the needed libraries (python -m pip install --upgrade -r requirements.txt, or use py -m ... on windows)

  3. Create the _api_keys.py file:

    touch ~/smiggins/smiggins/backend/_api_keys.py
    echo "auth_key = b'some random text this can be anything'" > ~/smiggins/smiggins/backend/_api_keys.py

    if you're on Windows then fuck you it's probably easier to do this using file explorer

  4. In the folder REPO_BASE/smiggins run the command python3 manage.py migrate (once again py ... for windows)

  5. In the settings.json file, make sure the site_url property is set properly

  6. Then, to start the server, run python3 manage.py runserver (py ... on windows still). If you want to start the server but already have the files, just do this step again. When updating versions, repeat step four too assuming you don't delete the _api_keys.py file, then you'd have to do step three again too.

How to set up the server on PythonAnywhere (using a venv)

  1. Create a venv (the name can be anything). if you already have one feel free to skip this step ```bash

    the VENV_NAME can be anything

    mkvirtualenv VENV_NAME --python=/usr/bin/python3.10

    
    
  2. On the webapp setup page, create a new webapp. If you already have one, delete it and recreate it if it has a different config. You should click the following buttons in this order:

    • Add a new web app
    • Next
    • Manual configuration
    • Python 3.X (it doesn't matter)
    • Next
  3. On the webapp dashboard, in the "Virtualenv" section, you are going to want to enter the path to your venv. It should be /home/USERNAME/.virtualenvs/VENV_NAME.

  4. Click the "Start a console on this virtualenv" button to create a console in the venv. Then install needed libraries.

    python -m pip install --upgrade -r requirements.txt
  5. Clone the github repo

    cd ~
    git clone https://github.com/jerimiah-smiggins/smiggins.git
    # Optional: Change branch
    git switch branch-name
  6. Open the file at /var/www/USERNAME_pythonanywhere_com.wgsi.py and put the following python code, replacing "USERNAME" with your PythonAnywhere username:

    import os
    import sys
    
    path = '/home/USERNAME/smiggins/smiggins'
    if path not in sys.path:
        sys.path.append(path)
    
    os.environ['DJANGO_SETTINGS_MODULE'] = 'smiggins.settings'
    
    from django.core.wsgi import get_wsgi_application
    application = get_wsgi_application()
  7. Back on the webapp dashboard, in the "Static Files" section, make an entry for /static/ with the path set to /home/USERNAME/smiggins/smiggins/collected-static

  8. In the file at /home/USERNAME/smiggins/smiggins/settings.json, make sure the following settings are set:

  9. Create the _api_keys.py file:

    touch ~/smiggins/smiggins/backend/_api_keys.py
    echo "auth_key = b'some random text this can be anything'" > ~/smiggins/smiggins/backend/_api_keys.py
  10. In your venv console, run the following commands to create the database and setup the static files:

    cd ~/smiggins/smiggins
    python manage.py collectstatic
    python manage.py migrate

How to set up the server on PythonAnywhere (no venv)

  1. Create a new webapp using the following settings:

    • Manual configuration
    • Python 3.10
  2. Install and update the required libraries

    python -m pip install --upgrade -r requirements.txt
  3. Clone the github repo

    cd ~
    git clone https://github.com/jerimiah-smiggins/smiggins.git
    # Optional: Change branch
    git switch branch-name
  4. Open the file at /var/www/USERNAME_pythonanywhere_com.wgsi.py and put the following python code, replacing "USERNAME" with your PythonAnywhere username:

    import os
    import sys
    
    path = '/home/USERNAME/smiggins/smiggins'
    if path not in sys.path:
        sys.path.append(path)
    
    os.environ['DJANGO_SETTINGS_MODULE'] = 'smiggins.settings'
    
    from django.core.wsgi import get_wsgi_application
    application = get_wsgi_application()

    This file can be found at the url https://www.pythonanywhere.com/user/USERNAME/files/var/www/USERNAME_pythonanywhere_com.wgsi.py

  5. Back on the webapp dashboard, in the "Static Files" section, make an entry for /static/ with the path set to /home/USERNAME/smiggins/smiggins/collected-static

  6. In the file at /home/USERNAME/smiggins/smiggins/settings.json, make sure the following settings are set:

  7. Create the _api_keys.py file:

    touch ~/smiggins/smiggins/backend/_api_keys.py
    echo "auth_key = b'some random text this can be anything'" > ~/smiggins/smiggins/backend/_api_keys.py
  8. In your venv console, run the following commands to create the database and setup the static files:

    cd ~/smiggins/smiggins
    python3.10 manage.py collectstatic
    python3.10 manage.py migrate

How to upgrade versions on PythonAnywhere (using a venv)

To clone the newest version, do the following commands in the ~/smiggins folder:

git stash
git pull
git stash pop

Then, in the venv console, run these commands in the ~/smiggins/smiggins folder:

python manage.py collectstatic
python manage.py migrate

Then, just restart the server from the webapp dashboard!

How to upgrade versions on PythonAnywhere (no venv)

To clone the newest version, do the following commands in the ~/smiggins folder:

git stash
git pull
git stash pop

Then, in the venv console, run these commands in the ~/smiggins/smiggins folder:

python3.10 manage.py collectstatic
python3.10 manage.py migrate

Then, just restart the server from the webapp dashboard!

Where can I report issues or suggest stuff

go to the issues tab and make a new issue (make sure you're logged in with github)

How to setup Gmail on PythonAnywhere

First, you need to make sure 2 step verification is enabled for the gmail account you want to send the emails from. Do this by going to this link.

Next, you'll need to create an app password, by going to this link. The app name can be anything you want, and it should show you four strings of four letters. Save this for the next step.

Finally, in the _api_keys.py file in the backend folder, put the following code, modifying it for your needs:

smtp_auth = {
    "EMAIL_HOST": "smtp.gmail.com",
    "EMAIL_HOST_USER": "[email]@gmail.com", # put the full email, like [email protected]
    "EMAIL_HOST_PASSWORD": "xxxx xxxx xxxx xxxx", # put in the password obtained in the previous step
    "EMAIL_PORT": 587,
    "EMAIL_USE_TLS": True,
    "DEFAULT_FROM_EMAIL": "[email]@gmail.com" # put the full email, like [email protected]
}