You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A bespoke CMS for the Landscape Architecture Film Series website
3
+
An early aughts basic website turned modern dev playground for front-end and back-end skill building
4
4
5
-
## Description
5
+
## Table of Contents
6
6
7
7
> [!NOTE]
8
8
> ALL CONTENTS IN THIS REPO ARE FOR EDUCATIONAL PURPOSES ONLY.
9
9
10
-
_LAFSCMS_ is the companion Content Management System (CMS) for the _Landscape Architecture Film Series_[website](https://l-a-f-s.org/). Currently in alpha, the plan is to merge the beta version with the [film series repo](https://github.com/ggeerraarrdd/film-series).
11
-
12
-
Just like any real-world organization, student-run organizations such as a film series experience knowledge loss when their members graduate. Without a knowledge transfer process, this loss can lead to technical resources being underutilized or becoming inactive. While alternative resources and processes may exist, they either need to be created from scratch, requiring significant time and resources, or are imperfect substitutes. If existing resources work perfectly fine, why go through all that effort?
13
-
14
-
_LAFSCMS_ was developed to address this issue of knowledge loss by providing a CMS with a user-friendly web interface to manage content and users efficiently.
15
-
16
-

17
-
18
-
More screenshots below.
19
-
20
-
## Table of Contents
21
-
22
10
*[Description](#description)
11
+
*[Target Users](#target-users)
23
12
*[Features](#features)
24
13
*[Project Structure](#project-structure)
25
14
*[Prerequisites](#prerequisites)
26
15
*[Getting Started](#getting-started)
27
16
*[Dependencies](#dependencies)
28
17
*[Installation](#installation)
29
18
*[Configuration](#installation)
30
-
*[Usage](#usage)
19
+
*[Usage](#usage)
20
+
*[System Administration](#system-administration)
31
21
*[Author(s)](#authors)
32
22
*[Version History](#version-history)
33
23
*[Release Notes](#release-notes)
@@ -38,40 +28,60 @@ More screenshots below.
38
28
*[Acknowledgments](#acknowledgments)
39
29
*[Screenshots](#screenshots)
40
30
41
-
## Features
31
+
## Description
32
+
33
+
In the early aughts, I created a website for a Landscape Architecture Film Series, which I co-founded and co-curated for the Department of Landscape Architecture at the University of Illinois Urbana/Champaign.
34
+
35
+
Now some odd years later and needing a website to use as a learning vehicle for back-end technical skill-building, but not wanting to spend anytime to ideate and design a new one from scratch, I turned to my old website. Its look and feel has aged well, I think, and indeed looks remarkably contemporary. For instance, if the current version of MoMA's film series is anything to go by, bold color blocking isn't a dated design choice.
42
36
43
-
* Content Management
44
-
* Complete film series lifecycle handling (Create, Edit, Publish, Unpublish)
45
-
* Flexible schedule management tools
46
-
* Integrated media asset handling
37
+
Using that decades-old website, this development playground has borne out these outcomes:
47
38
48
-
* Security
49
-
* Secure authentication with role-based controls (Admin and Curator roles)
50
-
* Basic user privilege management
51
-
* Baseline database security implementation
39
+
*[_LAFS_](https://github.com/ggeerraarrdd/lafs)
52
40
53
-
* Database Features
54
-
* Historical data preservation
55
-
* Searchable archive
41
+
A digital archive of the website as a dynamic web application.
56
42
57
-
* Interface
58
-
* Instant content synchronization
59
-
* Multi-user collaboration support
43
+
What would otherwise exist as slowly disintegrating bits on a forgotten CD in a remote storage facility or as [fragmented snapshots](https://web.archive.org/web/20040827234527/http://www.rehearsal.uiuc.edu/projects/filmseries/) somewhere in the depths of the Internet Archive has been meticulously restored and recreated.
44
+
45
+
No longer basic or static—but a dynamic web application with modern tooling such as Python, Flask, SQLite and AWS. It even has a data model to speak of. It’s interesting to note that the original website predated almost all of the technology used.
46
+
47
+
*[l-a-f-s.org](https://l-a-f-s.org)
48
+
49
+
_LAFS_ but live online!
50
+
51
+
*_LAFSCMS_
52
+
53
+
A companion Content Management System (CMS) - this repository.
54
+
55
+
Just like any real-world organization, student-run organizations such as a film series experience knowledge loss when their members graduate. Without a knowledge transfer process, this loss can lead to technical resources being underutilized or becoming inactive. While alternative resources and processes may exist, they either need to be created from scratch, requiring significant time and resources, or are imperfect substitutes. If existing resources work perfectly fine, why go through all that effort?
56
+
57
+
This CMS, then, was conceived as a solution to the problem of knowledge loss by providing a platform to manage content and users efficiently with a user-friendly web interface.
58
+
59
+
What else might be concocted from this development playground? Stay tuned!
source venv/bin/activate # On Windows use `venv\Scripts\activate`
132
141
```
133
142
134
-
4. **Install the dependencies:**
143
+
3. **Install the dependencies**
135
144
136
145
```bash
146
+
pip install --upgrade pip
137
147
pip install -r requirements.txt
138
148
```
139
149
140
-
5. **Create an `.env` file and set the environment variables:**
150
+
### Configuration
151
+
152
+
1. **Create an `.env` file**
153
+
154
+
Place the file in the root directory and add the following as default:
155
+
156
+
```python
157
+
# Database Path
158
+
DATABASE_NAME='data/lafs.db'
141
159
142
-
Create a file named `.env`in the `app` directory of the project and add the following variables:
160
+
# Database Connection Pool
161
+
POOL_SIZE=5
162
+
MAX_OVERFLOW=10
163
+
POOL_TIMEOUT=30
164
+
POOL_RECYCLE=-1
165
+
ECHO=False
143
166
144
-
```properties
145
-
SECRET_KEY=your_secret_key
146
-
MAP_API_KEY=your_map_api_key
147
-
DATABASE_NAME="lafs.db"
167
+
# Database Retry Settings
168
+
MAX_RETRIES=3
169
+
BASE_DELAY=1
170
+
MAX_DELAY=10
171
+
172
+
# Flask Secret Key
173
+
SECRET_KEY='your_flask_secret_key'
174
+
175
+
# Google Maps API Key
176
+
MAP_API_KEY='your_map_api_key'
148
177
```
149
178
150
-
Replace `your_secret_key` (see #6 below) and `your_map_api_key` (see # 7 below) with your actual secret key and API key.
179
+
2. **Database**
151
180
152
-
6. **Notes on Flask Secret Keys:**
181
+
```python
182
+
# Database Path
183
+
DATABASE_NAME='data/lafs.db'# Path to SQLite database file
153
184
154
-
* TBD
185
+
# Database Connection Pool
186
+
POOL_SIZE=15 # Max number of persistent connections
187
+
MAX_OVERFLOW=5 # Max number of connections above POOL_SIZE
188
+
POOL_TIMEOUT=30 # Seconds to wait for available connection
189
+
POOL_RECYCLE=1800 # Seconds before connection is recycled
190
+
ECHO=False # Enable SQLAlchemy engine logging
155
191
156
-
7. **Notes on Google Maps API Keys:**
192
+
# Database Retry Settings
193
+
MAX_RETRIES=3 # Max retry attempts for failed operations
194
+
BASE_DELAY=1 # Initial delay between retries in seconds
195
+
MAX_DELAY=10 # Max delay between retries in seconds
196
+
```
157
197
158
-
* TBD
198
+
3. **Flask Secret Key**
159
199
160
-
### Configuration
200
+
```python
201
+
# Flask Secret Key
202
+
SECRET_KEY='your_flask_secret_key'
203
+
```
161
204
162
-
* TBD
205
+
4. **Google Maps API Key**
163
206
164
-
### Usage
207
+
```python
208
+
# Google Maps API Key
209
+
MAP_API_KEY='your_map_api_key'
210
+
```
165
211
166
-
1. **Go into the app directory and run the command:**
212
+
An API Key is needed for the embedded map to work. Before you can create one, you will need to create a Google Cloud project, for which you need a Google Cloud account.
213
+
214
+
* [Set up a Google Cloud account](https://cloud.google.com)
215
+
* [Set up your Google Cloud project](https://developers.google.com/maps/documentation/javascript/cloud-setup)
216
+
* [Using API Keys](https://developers.google.com/maps/documentation/javascript/get-api-key)
217
+
218
+
## Usage
219
+
220
+
1. **Go into the app directory and run the command**
167
221
168
222
```bash
169
223
flask run
170
224
```
171
225
172
-
2. **Open the film series website:**
226
+
2. **Open the film series website**
173
227
174
228
Copy and open the URL displayed after 'Running on'in the terminal.
0 commit comments