81 lines
3 KiB
Markdown
81 lines
3 KiB
Markdown
# Missoula Council of the Deaf, Inc. Website
|
|
|
|
This repository contains the source code for the Missoula Council of the Deaf, Inc. (MCDi) website. The project is built using a modern web stack with React for the frontend and Express.js for the backend, both implemented in TypeScript. The application is containerized using Docker for easy deployment and scalability.
|
|
|
|
## Features
|
|
|
|
- Responsive design using Tailwind CSS
|
|
- Dynamic UI components with React and Framer Motion for animations
|
|
- TypeScript for enhanced type safety and developer experience
|
|
- Express.js backend serving static React files and handling API requests
|
|
- Docker containerization for consistent development and deployment environments
|
|
- Calendar functionality with upcoming events display
|
|
- About Us section with board member information
|
|
- Bylaws and Minutes sections for organizational transparency
|
|
- Sponsor showcase
|
|
- Contact form in the footer
|
|
|
|
## Key Components
|
|
|
|
### Client-side
|
|
|
|
- `App.tsx`: Main application component with routing setup
|
|
- `Header.tsx`: Navigation component
|
|
- `Home.tsx`: Landing page with featured content
|
|
- `Calendar.tsx`: Interactive calendar with event display
|
|
- `Meet-Board.tsx`: Board member profiles
|
|
- `Bylaws.tsx`: Organization bylaws display
|
|
- `Minutes.tsx`: Meeting minutes display
|
|
- `Sponsors.tsx`: Sponsor information and logos
|
|
- `Footer.tsx`: Footer component with contact form
|
|
|
|
### Server-side
|
|
|
|
- `index.ts`: Express.js server setup
|
|
- `sendEmail.ts`: Email sending functionality for contact form
|
|
|
|
## Getting Started
|
|
|
|
To run this project locally:
|
|
|
|
1. Clone the repository
|
|
2. Install Docker and Docker Compose
|
|
3. Create a `.env` file in the root directory with necessary environment variables
|
|
4. Run `docker-compose up --build` in the project root directory
|
|
5. Access the website at `http://localhost:5000`
|
|
|
|
## Development
|
|
|
|
- Client-side development: `cd client && npm start`
|
|
- Server-side development: `cd server && npm run dev`
|
|
- Build client: `cd client && npm run build`
|
|
- Build server: `cd server && npm run build`
|
|
|
|
## Deployment
|
|
|
|
The project is set up for easy deployment using Docker. The `Dockerfile` includes a multi-stage build process for both client and server, optimizing the final image size.
|
|
|
|
## Deployment with Docker Compose
|
|
|
|
This project is containerized using Docker for easy deployment. Follow these steps to deploy the MCDi website:
|
|
|
|
1. Ensure Docker and Docker Compose are installed on your system.
|
|
|
|
2. Navigate to the project root directory containing the docker-compose.yml file.
|
|
|
|
3. Create a .env file in the root directory with the necessary environment variables:
|
|
NODE_ENV=production
|
|
GOOGLE_EMAIL=your-email@gmail.com GOOGLE_APP_PASSWORD=your-app-password
|
|
|
|
4. Build and start the containers:
|
|
docker-compose up --build
|
|
|
|
5. Access the application at http://localhost:4000
|
|
|
|
6. To stop the containers:
|
|
docker-compose down
|
|
|
|
7. Use Docker Compose in detached mode:
|
|
docker-compose up -d
|
|
|
|
This setup allows for easy deployment and management of the MCDi website container, with the ability to scale and update as needed using Docker Compose.
|