Skip to content

Commit 1c7ac24

Browse files
committed
Update README.md
1 parent d5c793b commit 1c7ac24

File tree

1 file changed

+124
-66
lines changed

1 file changed

+124
-66
lines changed

README.md

Lines changed: 124 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,23 @@
1-
# LAFSCMS
1+
# LAFS-DEV
22

3-
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
44

5-
## Description
5+
## Table of Contents
66

77
> [!NOTE]
88
> ALL CONTENTS IN THIS REPO ARE FOR EDUCATIONAL PURPOSES ONLY.
99
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-
![LAFSCMS](docs/images/lafscms_1.png)
17-
18-
More screenshots below.
19-
20-
## Table of Contents
21-
2210
* [Description](#description)
11+
* [Target Users](#target-users)
2312
* [Features](#features)
2413
* [Project Structure](#project-structure)
2514
* [Prerequisites](#prerequisites)
2615
* [Getting Started](#getting-started)
2716
* [Dependencies](#dependencies)
2817
* [Installation](#installation)
2918
* [Configuration](#installation)
30-
* [Usage](#usage)
19+
* [Usage](#usage)
20+
* [System Administration](#system-administration)
3121
* [Author(s)](#authors)
3222
* [Version History](#version-history)
3323
* [Release Notes](#release-notes)
@@ -38,40 +28,60 @@ More screenshots below.
3828
* [Acknowledgments](#acknowledgments)
3929
* [Screenshots](#screenshots)
4030

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.
4236

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:
4738

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)
5240

53-
* Database Features
54-
* Historical data preservation
55-
* Searchable archive
41+
A digital archive of the website as a dynamic web application.
5642

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!
60+
61+
![LAFSCMS](docs/images/lafscms_1.png)
62+
63+
## Target Users
64+
65+
* TBD
66+
67+
## Features
68+
69+
* TBD
6070

6171
## Project Structure
6272

6373
```txt
64-
lafs-cms/
74+
lafs-dev/
6575
6676
├── app/
6777
│ │
6878
│ ├── blueprints/
6979
│ │ │
7080
│ │ ├── cms/
71-
│ │ │ ├── __init__.py
72-
│ │ │ ├── routes.py
73-
│ │ │ ├── static/
74-
│ │ │ └── templates/
81+
│ │ │ ├── __init__.py
82+
│ │ │ ├── routes.py
83+
│ │ │ ├── static/
84+
│ │ │ └── templates/
7585
│ │ │
7686
│ │ └── main/
7787
│ │ ├── __init__.py
@@ -88,11 +98,16 @@ lafs-cms/
8898
│ ├── data/
8999
│ │ └── lafs.db
90100
│ │
91-
│ ├── helpers/
101+
│ ├── infra/
102+
│ │ └── __init__.py
103+
│ │
104+
│ ├── utils/
92105
│ │ └── __init__.py
93106
│ │
94107
│ └── app.py
95108
109+
├── logs/
110+
96111
├── docs/
97112
├── .gitignore
98113
├── LICENSE
@@ -112,71 +127,114 @@ lafs-cms/
112127

113128
### Installation
114129

115-
1. **Clone the repository:**
116-
117-
```bash
118-
git clone https://github.com/ggeerraarrdd/lafs-cms.git
119-
```
120-
121-
2. **Navigate into the project directory:**
130+
1. **Clone the repository**
122131

123132
```bash
124-
cd lafs-cms # For example
133+
git clone https://github.com/ggeerraarrdd/lafs-dev.git
125134
```
126135

127-
3. **Create and activate a virtual environment:**
136+
2. **Set up a Python virtual environment**
128137

129138
```bash
130-
python -m venv venv
139+
python3 -m venv venv
131140
source venv/bin/activate # On Windows use `venv\Scripts\activate`
132141
```
133142

134-
4. **Install the dependencies:**
143+
3. **Install the dependencies**
135144

136145
```bash
146+
pip install --upgrade pip
137147
pip install -r requirements.txt
138148
```
139149

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'
141159
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
143166
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'
148177
```
149178

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**
151180

152-
6. **Notes on Flask Secret Keys:**
181+
```python
182+
# Database Path
183+
DATABASE_NAME='data/lafs.db' # Path to SQLite database file
153184
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
155191
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+
```
157197

158-
* TBD
198+
3. **Flask Secret Key**
159199

160-
### Configuration
200+
```python
201+
# Flask Secret Key
202+
SECRET_KEY='your_flask_secret_key'
203+
```
161204

162-
* TBD
205+
4. **Google Maps API Key**
163206

164-
### Usage
207+
```python
208+
# Google Maps API Key
209+
MAP_API_KEY='your_map_api_key'
210+
```
165211

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**
167221

168222
```bash
169223
flask run
170224
```
171225

172-
2. **Open the film series website:**
226+
2. **Open the film series website**
173227

174228
Copy and open the URL displayed after 'Running on' in the terminal.
175229

176-
3. **Access the CMS:**
230+
3. **Access the CMS**
177231

178232
Add `/cms` at the end of the URL.
179233

234+
## System Administration
235+
236+
* TBD
237+
180238
## Author(s)
181239

182240
* [@ggeerraarrdd](https://github.com/ggeerraarrdd/)
@@ -205,7 +263,7 @@ Development of core features is ongoing.
205263

206264
## Acknowledgments
207265

208-
* Notion AI
266+
* Coeus
209267

210268
## Screenshots
211269

0 commit comments

Comments
 (0)