Skip to content

Commit fd3f882

Browse files
committed
Add documentation for PWA(#8123)
1 parent a70fdb3 commit fd3f882

3 files changed

Lines changed: 166 additions & 0 deletions

File tree

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
---
2+
title: Progressive Web App (PWA)
3+
category: Developer > Development Instructions
4+
permalink: /developer/development_instructions/pwa
5+
redirect_from:
6+
- /developer/pwa
7+
---
8+
9+
Submitty includes support for **Progressive Web App (PWA)** features, enabling an installable, app-like experience across desktop and mobile platforms.
10+
11+
This page provides an overview of how PWA functionality is structured in Submitty and how developers can extend or maintain it.
12+
13+
For general PWA concepts, see: [PWA overview (MDN)](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps)
14+
15+
 
16+
17+
## Overview
18+
19+
A Progressive Web App (PWA) is a web application that can:
20+
21+
* Be installed on a device (desktop or mobile)
22+
* Run in a standalone window
23+
* Provide an app-like user experience
24+
25+
In Submitty, PWA support focuses on:
26+
27+
* Installability via browser prompts
28+
* Standalone display mode
29+
* Cross-platform compatibility
30+
31+
 
32+
33+
## Core Components
34+
35+
### Web App Manifest
36+
37+
Submitty includes a **web app manifest** that defines how the application appears when installed.
38+
39+
Typical responsibilities include:
40+
41+
* App name and short name
42+
* Icons for different device sizes
43+
* Start URL
44+
* Display mode (`standalone`)
45+
46+
For more details, see: [Web App Manifest reference (MDN)](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Manifest)
47+
48+
<!-- TODO: Add link to manifest location in Submitty codebase -->
49+
50+
&nbsp;
51+
52+
### Display Mode
53+
54+
Submitty uses a **standalone display mode** so that the app opens without standard browser UI (tabs, address bar).
55+
56+
This creates a more focused, app-like experience for users.
57+
58+
For more details, see: [Display modes (MDN)](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Manifest/display)
59+
60+
&nbsp;
61+
62+
### Installability
63+
64+
Modern browsers automatically detect when Submitty meets PWA requirements and may prompt users to install it.
65+
66+
Basic requirements include:
67+
68+
* Valid manifest file
69+
* Served over HTTPS (or localhost for development)
70+
71+
For more details, see: [PWA installability guide (MDN)](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Making_PWAs_installable)
72+
73+
<!-- TODO: Add link to installation trigger logic if implemented -->
74+
75+
&nbsp;
76+
77+
## Current Scope in Submitty
78+
79+
At present, Submitty’s PWA support is intentionally minimal and focuses on:
80+
81+
* Installable interface
82+
* Consistent experience across devices
83+
84+
The following are **not fully implemented** (or are planned improvements):
85+
86+
* Offline functionality
87+
* Background sync
88+
* Push notifications
89+
90+
&nbsp;
91+
92+
## Development Considerations
93+
94+
When working on PWA-related features in Submitty:
95+
96+
* Ensure compatibility across major browsers (Chrome, Edge, Safari)
97+
* Avoid breaking standard browser usage (Submitty must still function normally without installation)
98+
* Keep performance and responsiveness in mind
99+
* Test both installed and non-installed experiences
100+
101+
&nbsp;
102+
103+
## Possible Extensions
104+
105+
Future improvements to PWA support may include:
106+
107+
* Offline access to selected pages using service workers
108+
* Push notifications for deadlines and announcements
109+
* Improved caching strategies for faster load times
110+
111+
For background concepts, see: [Offline and caching (MDN)](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Offline_and_background_operation)
112+
113+
&nbsp;
114+
115+
## Testing
116+
117+
To test PWA behavior:
118+
119+
1. Run Submitty in a secure environment (HTTPS or localhost).
120+
2. Open the application in a supported browser.
121+
3. Check for install prompts or manually install the app.
122+
4. Verify:
123+
* App launches in standalone mode
124+
* Icons and branding appear correctly
125+
* Navigation works as expected
126+
127+
&nbsp;
128+
129+
## Additional Resources
130+
131+
* [PWA overview (MDN)](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps)
132+
* [Making PWAs installable (MDN)](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Making_PWAs_installable)
133+
* [Web App Manifest (MDN)](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Manifest)

_docs/index/features.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,3 +182,35 @@ _Note: Click on the <u>links</u> and <i class="fas fa-info-circle" style="font-s
182182
* significant recent improvements
183183
* W3C html validation
184184
* mobile-friendly (phone and tablet compatibility)
185+
186+
&nbsp;
187+
188+
189+
* **Progressive Web App (PWA)**
190+
Installable version of Submitty that works on mobile and desktop devices, supported on modern browsers across Android, iOS, and desktop platforms.
191+
{% include feature_text.html
192+
text="Provides an app-like interface that can be launched directly from a device home screen or desktop. Ideal for quick access to assignments, grades, and course content." %}
193+
194+
* **What is a PWA?**
195+
A Progressive Web App (PWA) is a web application built using standard web technologies that delivers an experience similar to a platform-specific app. PWAs combine the best of websites and native apps: they are cross-platform, accessible via the web, installable, work offline, and can send push notifications.
196+
197+
* **Installation & Setup:**
198+
* Click the "Install Submitty" button on your profile page.
199+
* Follow your browser prompts to add Submitty to your home screen or desktop.
200+
* Launch Submitty like a normal app, without opening your browser.
201+
202+
* **Current Features:**
203+
* Quick access to courses, assignments, grades, and announcements.
204+
* Mobile-friendly interface optimized for smaller screens.
205+
* Installed PWAs get a dedicated app icon and can run in full-screen mode.
206+
207+
* **Planned Enhancements:**
208+
* Offline access to selected pages.
209+
* Push notifications for announcements, assignment deadlines, and updates.
210+
211+
* **Learn More / Developer Resources:**
212+
* [Submitty Developer Documentation – PWA](/developer/development_instructions/pwa)
213+
* [Progressive Web Apps – MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps)
214+
* Reference implementation and ideas from our GSoC contributors:
215+
* [Mukul Kumar Jha – PWA & Mobile Enhancements](https://submitty.org/developer/google_summer_of_code/2020_Mukul_Kumar_Jha)
216+
* [Madhur Jain – PWA & Push Notifications](https://submitty.org/developer/google_summer_of_code/2022_Madhur_Jain)

navtreedata.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,7 @@ var NAVTREE =
215215
] ],
216216
[ "Development Instructions", "/developer/development_instructions/index", [
217217
[ "Overview", "/developer/development_instructions/index", null ],
218+
[ "Progressive Web App (PWA)", "/developer/development_instructions/pwa", null ],
218219
[ "Sample Courses Data", "/developer/development_instructions/sample_data", null ],
219220
[ "Migrations", "/developer/development_instructions/migrations", [
220221
[ "Trigger Functions", "/developer/development_instructions/trigger_functions", null ]

0 commit comments

Comments
 (0)