The "Participant Directory" project is designed to showcase the profiles of participants to an online audience. This platform allows users to view detailed information about each participant, including their professional summaries and photos. It is ideal for organizations or groups that need to present member information in an accessible and visually appealing format.
- React: The project is built using Create React App, which provides a robust framework for building user interfaces.
- Node.js: Used for managing dependencies and running scripts to build and develop the application.
- GitHub Pages: The site is hosted on GitHub Pages, making it easy to deploy and share.
- GitHub Actions: Automated workflows handle the conversion of participant data from CSV to JSON format, ensuring the React app always displays the latest information.
- Python: Utilized for scripts that process data files (e.g., converting CSV to JSON).
- TypeScript: Used for type safety and improved developer experience in the React application.
Here is an overview of the project structure, highlighting the key important files and directories:
.
├── .gitattributes
├── .gitignore
├── README.md
├── package-lock.json
├── package.json
├── public
│ └── ...
├── src
│ ├── data
│ └── ...
└── tsconfig.json
.gitattributes
: Git attributes file, used to manage path-specific settings..gitignore
: Specifies files and directories that Git should ignore.README.md
: Project documentation file. (This File!)package-lock.json
: Describes the exact tree that was generated by npm.package.json
: Contains project metadata and dependencies.public/
: Contains public assets and the HTML file.src/
: Contains source code for the React application.data/
: Data folder for participant data.
tsconfig.json
: TypeScript configuration file.
These are the key important files and directories in the project. They are highlighted here to help you understand the project's structure and where to find essential components and configuration settings.
To add or update participant information, follow these steps:
- Navigate to
public/data/participant_directory.csv
. - Open the file in a spreadsheet editor (e.g., Excel, Google Sheets).
- Ensure the CSV file contains the following columns:
id
,name
,certification
,summary
,linkedin
,github
,photo
. - The
summary
column must be filled in, and thephoto
column should be left blank (it will be populated by the script). - Save the updated CSV file.
- Place the participant’s photo in the
public/images/participant_photos/
folder. - The photo should be in JPEG or PNG format and named using snake_case, all lowercase (e.g.,
john_doe.jpg
orjane_smith.png
).
public/images/participant_photos/
- john_doe.jpg
- jane_smith.png
After updating the CSV file and adding any new photos, commit the changes and push them to the repository. GitHub Actions will automatically convert the updated CSV to JSON and deploy the changes.
To delete a participant:
-
Remove from CSV:
- Delete the participant's entry from
public/data/participant_directory.csv
.
- Delete the participant's entry from
-
Delete the Participant's Photo:
- Remove the participant's photo from the
public/images/participant_photos/
folder.
- Remove the participant's photo from the
-
Commit and Push Changes:
- Commit the changes and push them to the repository. GitHub Actions will handle the rest.
If you need to take the site offline, make the repository private. This action will effectively remove the GitHub Pages site.
- Navigate to Your Repository: Go to your repository on GitHub.
- Open Settings: Click on the
Settings
tab. - Danger Zone: Scroll down to the
Danger Zone
section. - Change Visibility: Click on
Change repository visibility
, then selectMake private
. - Confirm: Confirm your choice when prompted.
By following these instructions, you can manage the participant information efficiently, update summaries and photos, and take the site down if necessary. This project leverages modern web technologies to provide an easy-to-maintain and visually appealing directory of participants. If you have any questions or need further assistance, feel free to reach out!