Cloud Teacher Setup Guide

DPAssist for Teachers

Set up a cloud-based portfolio feedback system using Google Forms, Google Sheets, Streamlit Cloud, Render, Gmail, and Gemini.

No local Python required Cloud dashboard 24/7 background worker Teacher keeps final control
1

What You Are Setting Up

DPAssist has two cloud services that work together:

ServicePlatformPurpose
Teacher DashboardStreamlit CloudUpload rubrics, view submissions, and check system status.
Background WorkerRender Starter WorkerChecks Google Sheets every 60 seconds, evaluates portfolios, sends emails, and updates statuses.
Data StoreGoogle SheetsStores student submissions, rubric data, and processing status.
AI EvaluationGoogle GeminiEvaluates portfolio evidence against teacher rubrics.
Important: Streamlit Cloud is the dashboard only. The Render background worker is required for automatic processing. If only the dashboard is deployed, submissions will appear in Google Sheets but will not be evaluated automatically.

Current production deployment has been verified with real student submissions using the Streamlit dashboard and Render worker.

2

Prepare the Google Form and Sheet

Students submit portfolio links through a Google Form. Google Forms automatically records each submission in a connected Google Sheet.

Required form information

Required Google Sheet columns

DPAssist is designed to work with Google Form response sheets that include these fields:

DPAssist automatically adds status-tracking columns if they do not already exist.

Unit names matter: The unit name in the rubric must match the unit name in the Google Form exactly. For example, Milling About is different from milling about or Milling About!.
3

Create Google Cloud Credentials

DPAssist needs secure access to the Google Sheet connected to your form.

Create a Google Cloud project

  1. Go to https://console.cloud.google.com.
  2. Sign in with your Google account.
  3. Create a new project named DPAssist.
  4. Make sure the DPAssist project is selected.

Enable APIs

  1. Open APIs & Services > Library.
  2. Enable Google Sheets API.
  3. Enable Google Drive API.

Create a service account

  1. Open APIs & Services > Credentials.
  2. Choose Create Credentials > Service Account.
  3. Name it dpassist-reader.
  4. Skip optional role steps and finish creating the account.
  5. Open the service account, go to Keys, and create a new JSON key.
  6. Save the downloaded JSON file securely.
Do not upload the JSON file to GitHub. It contains private credentials. You will paste its contents into Streamlit Secrets and Render environment variables later.

Share the Google Sheet

  1. Open the downloaded JSON file in a text editor.
  2. Find the client_email value.
  3. Open your Google Form responses Sheet.
  4. Click Share.
  5. Add the service account email as an Editor.
  6. Uncheck Notify people and click Share.

Copy the Sheet ID

The Sheet ID is the long string between /d/ and /edit in the Google Sheet URL.

https://docs.google.com/spreadsheets/d/THIS_PART_IS_THE_SHEET_ID/edit
4

Create a Gmail App Password

DPAssist sends student feedback emails through Gmail using an App Password, not your normal Google password.

  1. Go to https://myaccount.google.com.
  2. Open Security.
  3. Make sure 2-Step Verification is turned on.
  4. Search for App passwords.
  5. Create an app password named DPAssist.
  6. Copy the 16-character password immediately.
Remove spaces. Google may display the app password in groups, such as abcd efgh ijkl mnop. When entering it in Streamlit or Render, use abcdefghijklmnop with no spaces.
5

Create a Gemini API Key

  1. Go to https://aistudio.google.com/app/apikey.
  2. Sign in with your Google account.
  3. Click Create API Key.
  4. Copy the key and store it securely.

The key is used by DPAssist to evaluate portfolios and parse rubric content.

6

Deploy the Streamlit Teacher Dashboard

The Streamlit app is the teacher-facing dashboard. It lets teachers upload rubrics, view submissions, and confirm system configuration.

  1. Go to https://share.streamlit.io and sign in with GitHub.
  2. Create a new app.
  3. Select repository bmorrow574/DPAssist or your fork.
  4. Set branch to main.
  5. Set main file path to portfolio_reviewer/teacher_ui.py.
  6. Open Advanced settings > Secrets.

Paste the following secrets, replacing placeholder values with your real values:

GOOGLE_SHEET_ID = "paste-your-sheet-id-here"
GEMINI_API_KEY = "paste-your-gemini-key-here"
TEACHER_EMAIL = "your.email@gmail.com"
GMAIL_APP_PASSWORD = "your16characterapppassword"
RUBRIC_STORAGE = "sheets"
CHECK_INTERVAL_SECONDS = "60"
GOOGLE_CREDENTIALS_JSON = '''
paste the entire contents of service-account-credentials.json here
'''
Triple quotes are required around the Google credentials JSON in Streamlit Secrets. Paste the entire JSON file, including the opening { and closing }.

Deploy the app. When the dashboard opens, go to System Status and confirm the required services show green check marks.

7

Deploy the Render Background Worker

The Render worker is what actually processes submissions. It must be deployed for DPAssist to run automatically.

Cost note: The working production deployment uses a Render Starter Worker. At the time of deployment, this was $7/month. Render pricing may change.
  1. Go to https://render.com and sign in with GitHub.
  2. Select New > Blueprint.
  3. Connect the GitHub repository.
  4. Render should detect render.yaml.
  5. Create a Blueprint instance, such as DPAssist-Production.
  6. Set branch to main.
  7. Leave Blueprint path as render.yaml.

Render environment variables

Enter these values when Render prompts for them:

VariableValue
GOOGLE_CREDENTIALS_JSONEntire contents of the service account JSON file
GOOGLE_SHEET_IDYour Google Sheet ID
GEMINI_API_KEYYour Gemini API key
TEACHER_EMAILThe Gmail address that sends feedback
GMAIL_APP_PASSWORDThe Gmail App Password with no spaces

The following values are defined in render.yaml:

RUBRIC_STORAGE=sheets
CHECK_INTERVAL_SECONDS=60

Deploy the worker. In Render logs, successful startup should show that the service is live and running python portfolio_reviewer/background_service.py. After deployment, the worker checks the Google Sheet every 60 seconds.

8

Daily Use

Add a rubric

  1. Open the Streamlit Teacher Dashboard.
  2. Click Rubrics.
  3. Upload the rubric PDF.
  4. Enter the unit name exactly as it appears in the Google Form.
  5. Set the due date.
  6. Click Parse and Add Rubric.

Monitor submissions

Open Submissions to view student names, units, due dates, and status.

StatusMeaning
Feedback sentStudent feedback email was sent successfully.
Teacher draft createdA teacher-facing draft/review message was created for a late submission.
Portfolio access issue emailedThe student's portfolio requires sign-in or is not publicly accessible.
ProcessingThe worker is actively evaluating the submission.

Student portfolio access

Students must publish portfolio links so they are accessible without Google sign-in. DPAssist now detects Google sign-in pages and emails the student instructions to fix the access issue.

Teacher control

DPAssist provides feedback and draft evaluation language. Teachers remain responsible for reviewing student work, assigning final grades, and making instructional decisions.

9

Troubleshooting

Nothing is processing

Dashboard works, but submissions do not process

This usually means the Streamlit dashboard is deployed but the Render worker is not running.

Student did not receive feedback

Rubric not found

Portfolio access issue

Ask the student to open the submitted link in an incognito/private window. If Google asks them to sign in, the site is not public yet.

10

Security Reminders