Skip to content

Commit 960f76e

Browse files
authored
Version 3.3.7 (#71)
2 parents 8926a73 + 6712566 commit 960f76e

File tree

9 files changed

+283
-20
lines changed

9 files changed

+283
-20
lines changed

ARCHITECTURE.md

Lines changed: 231 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,231 @@
1+
# HPSC website
2+
3+
## Table of Contents
4+
5+
- [Description](#description)
6+
- [Summary](#summary)
7+
- [Repository](#repository)
8+
- [Structure](#structure)
9+
- [Technology](#technology)
10+
- [Instructions](#instructions)
11+
- [Screenshots](#screenshots)
12+
- [License](#license)
13+
- [Author](#author)
14+
15+
## Description
16+
17+
This repository contains the source code for the Hartbeespoortdam Practical Shooting Club (HPSC) website.
18+
19+
## Summary
20+
21+
The [HPSC website](https://hpsc.co.za) uses modern web technologies
22+
to provide an informative and user-friendly platform for members and visitors.<br/>
23+
The primary technologies used in this project include TypeScript, SCSS, and MDX.
24+
25+
## Repository
26+
27+
The repository for this project is located at
28+
[GitHub](https://github.com/tahoni/hpsc-web-vite).
29+
30+
Feature requests, suggestions for improvements and bugs can be
31+
logged using the project's [Issues](https://github.com/tahoni/hpsc-web-vite/issues) page.
32+
33+
An overview of the project can be found at
34+
[https://tahoni.info/projects/hpsc-web-vite](https://www.tahoni.info/projects/hpsc-web-vite).
35+
36+
## Structure
37+
38+
A high-level structure of the project.
39+
40+
```text
41+
├───.github
42+
│ └───workflows
43+
├───builders
44+
├───documentation
45+
│ └───screenshots
46+
├───public
47+
│ └───assets
48+
│ └───images
49+
│ ├───club
50+
│ ├───content
51+
│ ├───layout
52+
│ └───logos
53+
└───src
54+
├───assets
55+
│ ├───fonts
56+
│ │ └───icomoon
57+
│ ├───images
58+
│ │ ├───icons
59+
│ │ └───ids
60+
│ └───stylesheets
61+
├───components
62+
│ ├───Captcha
63+
│ ├───Map
64+
│ ├───Sidebar
65+
│ ├───Text
66+
│ └───Title
67+
├───config
68+
├───constants
69+
│ ├───about
70+
│ └───images
71+
├───content
72+
│ ├───pages
73+
│ │ ├───AboutUs
74+
│ │ ├───History
75+
│ │ ├───Home
76+
│ │ └───Links
77+
│ └───posts
78+
│ ├───Events
79+
│ ├───Members
80+
│ └───Venues
81+
├───enums
82+
├───forms
83+
│ └───ContactUs
84+
├───helpers
85+
├───layout
86+
│ ├───Body
87+
│ ├───Breakpoints
88+
│ ├───Content
89+
│ ├───Footer
90+
│ └───Header
91+
├───model
92+
├───pages
93+
│ ├───AboutUs
94+
│ ├───ContactUs
95+
│ ├───Events
96+
│ ├───History
97+
│ ├───Home
98+
│ ├───Links
99+
│ ├───Members
100+
│ ├───News
101+
│ └───Venues
102+
├───services
103+
├───templates
104+
│ └───ContactUs
105+
└───utils
106+
```
107+
108+
## Technology
109+
110+
### Overview
111+
112+
This is a React project bootstrapped using Vite with the TypeScript React template.
113+
114+
It is written in TypeScript and uses both JSX and MDX components.
115+
116+
Bootstrap and React Bootstrap are used for the UI/UX.<br/>
117+
Styling is done by SCSS stylesheets.
118+
119+
React Router is used for page routing.
120+
121+
### Technology Stack
122+
123+
#### Languages:
124+
125+
- TypeScript 5
126+
127+
[![TypeScript Badge](https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
128+
129+
- HTML 5
130+
131+
[![HTML Badge](https://img.shields.io/badge/HTML-E34F26?logo=html5&logoColor=white)](https://www.w3.org/)
132+
133+
- CSS 3
134+
135+
[![CSS Badge](https://img.shields.io/badge/CSS-1572B6?logo=css3)](https://www.w3.org/)
136+
137+
#### Build Tools:
138+
139+
- npm 10
140+
141+
[![npm Badge](https://img.shields.io/badge/npm-CB3837?logo=npm)](https://www.npmjs.com/)
142+
143+
#### Frameworks:
144+
145+
- Vite 6
146+
147+
[![Vite Badge](https://img.shields.io/badge/Vite-646CFF?logo=vite&logoColor=white)](https://vitejs.dev/)
148+
149+
- React 19
150+
151+
[![React Badge](https://img.shields.io/badge/React-CB3837?logo=react)](https://react.dev/)
152+
153+
#### Libraries:
154+
155+
- Bootstrap 5
156+
157+
[![Bootstrap Badge](https://img.shields.io/badge/Bootstrap-7952B3?logo=bootstrap&logoColor=white)](https://getbootstrap.com/)
158+
159+
- React Bootstrap 2
160+
161+
[![React Bootstrap Badge](https://img.shields.io/badge/React_Bootstrap-7952B3?logo=bootstrap&logoColor=white)](https://react-bootstrap.github.io/)
162+
163+
- React Router 6
164+
165+
[![React Router Badge](https://img.shields.io/badge/React_Router-CB3837?logo=react&logoColor=white)](https://reactrouter.com/en/main)
166+
167+
## Instructions
168+
169+
The following commands are available in this project
170+
to set up the development environment
171+
and build the production environment.
172+
173+
#### `npm install`
174+
175+
This installs the dependencies.
176+
177+
#### Environment Variables
178+
179+
The npm key to @tahoni on GitHub needs
180+
to be set in the `GITHUB_TOKEN` environment variable,
181+
to load the `tahoni-lib-react` npm package.
182+
183+
The Google Maps API key from Google Cloud Services needs
184+
to be set in the `GOOGLE_MAPS_API_KEY` environment variable,
185+
otherwise, the map will not be available.
186+
187+
The Google reCAPTCHA site key from Google Cloud Services needs
188+
to be set in the `RECAPTCHA_V2_SITE_KEY` environment variable,
189+
otherwise, the CAPTCHA will break.
190+
191+
#### `npm run dev`
192+
193+
This runs the app in development mode.<br/>
194+
The page will reload if you make edits.
195+
196+
#### `npm run build`
197+
198+
This builds the app for production to the `dist` folder.<br/>
199+
Your app is ready to be deployed!
200+
201+
#### `npm run preview`
202+
203+
This previews the app locally in the `dist` folder.<br/>
204+
Use this to check if the production build looks OK in your local environment.
205+
206+
<!-- TODO: help on how to generate sitemap -->
207+
208+
## Screenshots
209+
210+
<!-- TODO: update screenshots -->
211+
212+
### History Page
213+
214+
![History Page](./documentation/screenshots/HistoryPage.png)
215+
216+
## License
217+
218+
Copyright © 2025 Hartbeespoortdam Practical Shooting Club.<br/>
219+
All Rights Reserved.
220+
221+
## Author
222+
223+
**Leoni Lubbinge**
224+
225+
- [![Website Badge](https://custom-icon-badges.demolab.com/badge/https%3A%2F%2Ftahoni.info-blue?logo=file-code)](https://www.tahoni.info)
226+
- [![Email Badge](https://custom-icon-badges.demolab.com/badge/leonil%40tahoni.info-blue?logo=mail)](mailto:leonil@tahoni.info)
227+
228+
- [![Outlook Email Badge](https://custom-icon-badges.demolab.com/badge/tahoni%40outlook.com-blue.svg?logo=mail)](mailto:tahoni@outlook.com)
229+
- [![Gmail Email Badge](https://img.shields.io/badge/tahoni%40gmail.com-blue?logo=gmail)](mailto:tahoni@gmail.com)
230+
- [![GitHub Badge](https://img.shields.io/badge/Leoni_Lubbinge-blue?logo=github)](https://github.com/tahoni)
231+
- [![LinkedIn Badge](https://custom-icon-badges.demolab.com/badge/Leoni_Lubbinge-blue.svg?logoSource=feather&logo=linkedin)](https://www.linkedin.com/in/leoni-lubbinge-06066b16/)

CHANGELOG.md

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
### Table of Contents
66

7+
- [Version 3.6.7](#version-367---2025-06-01)
78
- [Version 3.6.6](#version-366---2025-06-01)
89
- [Version 3.6.5](#version-365---2025-05-15)
910
- [Version 3.6.4](#version-364---2025-05-14)
@@ -45,7 +46,24 @@
4546
- [Version 3.0.1](#version-301---2024-08-27)
4647
- [Version 3.0.0](#version-300---2024-08-18)
4748

48-
### [Version 3.6.6](https://github.com/tahoni/hpsc-web-vite/releases/tag/version-3.6.5) - _2025-06-01_
49+
### [Version 3.6.7](https://github.com/tahoni/hpsc-web-vite/releases/tag/version-3.6.7) - _2025-06-01_
50+
Added a link to the World Shoot 2025 apparel at Bosninja.
51+
Added an architecture README document.
52+
53+
#### Enhancements and Updates
54+
55+
- Added a link to the Bosninja IPSC Handgun World Shoot 2025 apparel for the 2025 World Shoot Handgun post.
56+
- Added the link to the Bosninja webpage to the constants.
57+
58+
#### Licence and Documentation
59+
60+
- Added an `ARCHITCTURE.md` file and copied the content of the `README.md` file there.
61+
62+
#### Changes by
63+
64+
@tahoni
65+
66+
### [Version 3.6.6](https://github.com/tahoni/hpsc-web-vite/releases/tag/version-3.6.6) - _2025-06-01_
4967

5068
Created a sitemap of the website.
5169

RELEASE_NOTES.md

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,18 @@
22

33
## Release Notes
44

5-
### Version 3.6.6 - _2025-06-01_
6-
7-
Created a sitemap of the website.
5+
### Version 3.6.7 - _2025-06-01_
6+
Added a link to the World Shoot 2025 apparel at Bosninja.
7+
Added an architecture README document.
88

99
#### Enhancements and Updates
1010

11-
- Added a sitemap builder to the `builder` directory that generates a sitemap and logs it to the console.
12-
- Created a new model class for the sitemap builder to use.
13-
- Split off the page info needed by the sitemap builder into a separate TypeScript file.
14-
- Added metadata to the pages for the sitemap, like date last updated.
15-
16-
#### General Technical Changes
17-
18-
- Generated a `sitemap.xml` file with all the pages of the website.
19-
- Referred to this file in the `robots.txt` file.
11+
- Added a link to the Bosninja IPSC Handgun World Shoot 2025 apparel for the 2025 World Shoot Handgun post.
12+
- Added the link to the Bosninja webpage to the constants.
2013

21-
#### Dependencies
14+
#### Licence and Documentation
2215

23-
- Added the `sitemap` dependency.
24-
- Added the `tsx` dependency as a dev dependency.
16+
- Added an `ARCHITCTURE.md` file and copied the content of the `README.md` file there.
2517

2618
#### Changes by
2719

package-lock.json

Lines changed: 6 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
"react-router": "^7.5.2",
4343
"react-router-dom": "^7.5.2",
4444
"sanitize-html": "^2.14.0",
45-
"sitemap": "^8.0.0",
4645
"sweetalert2": "^11.16.1"
4746
},
4847
"devDependencies": {
@@ -58,6 +57,7 @@
5857
"globals": "^15.15.0",
5958
"rollup-plugin-visualizer": "^5.14.0",
6059
"sass": "^1.85.0",
60+
"sitemap": "^8.0.0",
6161
"tsx": "^4.19.4",
6262
"typescript": "~5.6.2",
6363
"typescript-eslint": "^8.24.0",

src/content/posts/Events/EventsContent.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ const EventsContent = React.memo((): ReactElement => {
66
WorldShootsContent,
77
];
88
return (
9-
<section>
9+
<>
1010
{Contents.map(
1111
(Content: MemoExoticComponent<() => ReactElement>, index: number) => (
1212
<Content key={"events_" + index} />
1313
),
1414
)}
15-
</section>
15+
</>
1616
);
1717
});
1818

src/content/posts/Events/stories/WorldShoots/2025/WorldShoot2025Constants.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,6 @@ export const worldShoot2025Event: VenueEvent = new VenueEvent({
3232
mapMode: "satellite",
3333
mapZoom: 17,
3434
});
35+
36+
export const worldShoot2025ApparelLink: string =
37+
"https://www.bosninja.co.za/product-category/ipsc-handgun-world-shoot-2025/";

0 commit comments

Comments
 (0)