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
* Note pause in development and update project description
* Review ADRs for relevance at time of writing; create "loose ends" list, documenting things we might want to reconsider if project development is resumed.
* Add colon to "notice"
* Add team email address to README
Copy file name to clipboardExpand all lines: README.md
+8-1Lines changed: 8 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,13 @@
1
1
# 10x Forms Platform
2
2
3
-
Test bed for 10x forms tooling, completed as part of the [10x Forms Platform](https://github.com/orgs/GSA-TTS/projects/38?pane=issue&itemId=58755590&issue=GSA-TTS%7C10x-projects%7C29) project.
3
+
> **Notice:**
4
+
> As of early May 2025, Forms Platform development is paused pending administrative prioritization.
5
+
6
+
Forms Platform is the product of extensive research and development completed by [10x](https://10x.gsa.gov/), a federal venture studio housed within the [General Services Administration](https://www.gsa.gov/)'s [Technology Transformation Services](https://tts.gsa.gov/).
7
+
8
+
Forms Platform aims to solve a persistent challenge faced by federal agencies: delivery of compliant and user-friendly forms, delivered cost-effectively, seamlessly integrated with diverse agency workflows, and accessible to non-technical program office staff. Deployed broadly, Forms Platform would serve as a common interface to federal government services, tailored to public sector needs.
9
+
10
+
If you would like to connect with the team or are interested in Forms Platform for your agency, please contact us at [10x-forms-platform@gsa.gov](mailto:10x-forms-platform@gsa.gov).
Copy file name to clipboardExpand all lines: documents/adr/0008-initial-form-handling-strategy.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -32,4 +32,4 @@ By starting small and not pulling in dependencies we do not immediately need, we
32
32
33
33
However, we risk losing the opportunity to quickly get "big wins" by pulling in a more fully-baked interview format at the onset. As a result, such solutions should be considered near-term integration opportunities.
34
34
35
-
This ADR will need to be continually reevaluated through the course of 10x phase 3 work.
35
+
This ADR should be continually reevaluated through the course of development.
Copy file name to clipboardExpand all lines: documents/adr/0013-database-strategy.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,7 +18,7 @@ The database should be commonly used and easy to host in many varied deployment
18
18
19
19
## Decision
20
20
21
-
We will use PostgreSQL in our production deployments. We will use [Testcontainers](https://testcontainers.com/) to unit-test database gateway logic against a PostgreSQL container. Integration testing will be handled with an in-memory SQLite database.
21
+
We will use PostgreSQL in our production deployments. We will use [Testcontainers](https://testcontainers.com/) to unit-test database gateway logic against a PostgreSQL container. Integration testing will be handled with ephemeral in-memory SQLite databases.
22
22
23
23
[Knex.js](https://knexjs.org/) is the most widely-used node.js query builder, and has backend adapters for most common relational databases. We will utilize Knex.js for its migration support. Knex.js may also be used for queries, as appropriate.
Copy file name to clipboardExpand all lines: documents/adr/0014-authentication.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,6 +6,8 @@ Date: 2024-09-04
6
6
7
7
Approved
8
8
9
+
> *NOTE: Lucia [is deprecated](https://github.com/lucia-auth/lucia/discussions/1714), and there were some challenges integrating it cleanly into the [auth package](../../packages/auth/). As a result, this ADR should be reconsidered.*
10
+
9
11
## Context
10
12
11
13
Forms Platform requires a method of authenticating users. We are inclined to default to [Login.gov](https://login.gov/), a government-wide federated service hosted by [TTS](https://www.gsa.gov/about-us/organization/federal-acquisition-service/technology-transformation-services), unless circumstances prevent its usage.
Copy file name to clipboardExpand all lines: documents/adr/0015-rest-api.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,6 +6,8 @@ Date: 2024-09-04
6
6
7
7
Approved
8
8
9
+
> *NOTE: The strategy for API management would benefit from being reconsidered.*
10
+
9
11
## Context
10
12
11
13
During the prototyping and demo phase, Forms Platform used client-side services that persisted to browser local storage. As we introduce a backend to support agency users, we need to structure an API for the content authoring operations of the platform.
Copy file name to clipboardExpand all lines: documents/adr/0017-use-named-exports.md
+9-1Lines changed: 9 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,31 +1,37 @@
1
-
# ADR 0017: Use Named Exports Over Default Exports and Avoid index Files
1
+
# 17. Use Named Exports Over Default Exports and Avoid index Files
2
2
3
3
Date: 04-16-2025
4
4
5
5
## Status
6
+
6
7
Approved
7
8
8
9
## Context
10
+
9
11
During the recent refactoring of the `Form` and `FormManager` components in the `design` package, we noticed inconsistencies in the use of default exports, named exports, and `index` files. Some files used default exports, while others used named exports. Additionally, many directories relied on `index.tsx` files, which made it harder to locate specific components or utilities in the codebase.
10
12
11
13
Default exports can sometimes lead to ambiguity, especially when renaming imports, and they do not provide the same level of tooling support (e.g., auto-imports in IDEs) as named exports. Named exports, on the other hand, make it clear what is being exported and allow for more consistent imports across the codebase.
12
14
13
15
Similarly, `index` files can introduce ambiguity when navigating the codebase, as multiple `index.tsx` files across different directories make it harder to locate specific functionality. Using descriptive file names improves clarity and maintainability.
14
16
15
17
## Decision
18
+
16
19
We will adopt the following guidelines for exports and file structure moving forward:
17
20
1.**Use named exports** for all components, utilities, and types.
18
21
2.**Avoid default exports**, except in cases where a file exports a single, primary entity (e.g., a React component that represents the main purpose of the file).
19
22
3.**Avoid `index` files** in favor of descriptive file names (e.g., `FormManager.tsx` instead of `index.tsx`).
20
23
21
24
## Consequences
25
+
22
26
-**Consistency:** The codebase will have a consistent export style and file structure, making it easier to read and maintain.
23
27
-**Tooling Support:** Named exports improve IDE tooling, such as auto-imports and refactoring.
24
28
-**Clarity:** Named exports and descriptive file names make it clear what is being exported and where functionality resides, reducing ambiguity.
25
29
-**Ease of Navigation:** Avoiding `index` files ensures that file names are descriptive, making it easier to locate specific components or utilities.
26
30
27
31
## Examples
32
+
28
33
### Before (Default Export):
34
+
29
35
```tsx
30
36
// FormManager.tsx
31
37
exportdefaultfunction FormManager() { ... }
@@ -36,6 +42,7 @@ import FormManager from './FormManager';
36
42
37
43
### After (Named Export):
38
44
```tsx
45
+
39
46
// FormManager.tsx
40
47
exportfunction FormManager() { ... }
41
48
@@ -44,6 +51,7 @@ import { FormManager } from './FormManager';
44
51
```
45
52
46
53
## Related Changes
54
+
47
55
This decision was applied during the refactoring of the `Form` and `FormManager` components in the design package. As part of this refactor:
48
56
49
57
- Default exports were replaced with named exports.
In early May 2025, Forms Platform development was suspended indefinitely. At that point, the project team was preparing for a pilot production launch, which would have brought functionality to an MVP status and wrapped up technical loose ends. This document describes that unfinished technical work that should be considered project development resumes.
6
+
7
+
## Task list
8
+
9
+
- ADR [0014-authentication](./adr/0014-authentication.md) describes an authentication approach that leverages the Lucia library. Lucia usage should be reconsidered when integrating with a production identity provider.
10
+
- ADR [0015-rest-api](./adr/0015-rest-api.md) describes a simple strategy for bootstrapping an API with Astro. At some point, before extensive API growth but probably perhaps pilot, a more thought out strategy should be considered.
11
+
- ADRs [0007-initial-css-strategy](./adr/0007-initial-css-strategy.md) and [0016-unused-css](./adr/0016-unused-css.md) describe CSS approaches. This approach should be reconsidered when the ability to integrate with agency USWDS themes and component encapsulation become important qualities.
0 commit comments