first commit

This commit is contained in:
pmb
2025-06-26 12:44:28 -07:00
commit b672b249a6
15 changed files with 1476 additions and 0 deletions
+307
View File
@@ -0,0 +1,307 @@
# Finger Web Flask Application
A simple, modern Flask web application demonstrating basic web development concepts with clean code structure, responsive design, and best practices.
## 🚀 Features
- **Multiple Routes**: Home, About, Contact pages with clean navigation
- **Contact Form**: Functional contact form with validation and flash messages
- **JSON API**: RESTful API endpoints for data exchange
- **Responsive Design**: Mobile-first design using Bootstrap 5
- **Error Handling**: Custom 404 and 500 error pages
- **Modern UI**: Clean, professional interface with animations
- **Form Validation**: Client-side and server-side validation
- **Configuration Management**: Environment-based configuration
## 📁 Project Structure
```
finger-web/
├── app.py # Main Flask application
├── config.py # Configuration settings
├── requirements.txt # Python dependencies
├── README.md # Project documentation
├── .gitignore # Git ignore file
├── Dockerfile # Docker container configuration
├── .dockerignore # Docker ignore file
├── docker-compose.yml # Docker Compose configuration
├── templates/ # HTML templates
│ ├── base.html # Base template with navigation
│ ├── index.html # Home page
│ ├── about.html # About page
│ ├── contact.html # Contact form
│ ├── 404.html # 404 error page
│ └── 500.html # 500 error page
└── static/ # Static assets
├── css/
│ └── style.css # Custom styles
└── js/
└── main.js # JavaScript functionality
```
## 🛠️ Technologies Used
### Backend
- **Python 3.x** - Programming language
- **Flask 2.3.3** - Web framework
- **Jinja2** - Template engine
- **Werkzeug** - WSGI toolkit
### Frontend
- **HTML5** - Markup language
- **CSS3** - Styling with custom animations
- **JavaScript (ES6+)** - Interactive functionality
- **Bootstrap 5.3** - CSS framework for responsive design
## 📋 Prerequisites
- Python 3.7 or higher
- pip (Python package installer)
- Virtual environment (recommended)
## 🚀 Installation & Setup
### 1. Clone or Download the Project
```bash
# If using git
git clone <repository-url>
cd finger-web
# Or download and extract the project files
```
### 2. Create Virtual Environment (Recommended)
```bash
# Create virtual environment
python -m venv venv
# Activate virtual environment
# On Windows:
venv\Scripts\activate
# On macOS/Linux:
source venv/bin/activate
```
### 3. Install Dependencies
```bash
pip install -r requirements.txt
```
### 4. Run the Application
```bash
python app.py
```
The application will start on `http://localhost:5000`
## 🌐 Available Routes
| Route | Method | Description |
|-------|--------|-------------|
| `/` | GET | Home page |
| `/about` | GET | About page |
| `/contact` | GET, POST | Contact form |
| `/api/hello` | GET | Simple JSON API endpoint |
| `/api/info` | GET | Application information API |
## 🔧 Configuration
The application uses environment variables for configuration. You can set these in your environment or create a `.env` file:
```bash
# Flask Configuration
FLASK_DEBUG=True
SECRET_KEY=your-secret-key-here
# Database (for future use)
DATABASE_URL=sqlite:///app.db
# Mail Configuration (for future use)
MAIL_SERVER=smtp.gmail.com
MAIL_PORT=587
MAIL_USE_TLS=True
MAIL_USERNAME=[email protected]
MAIL_PASSWORD=your-app-password
```
## 📱 API Endpoints
### GET /api/hello
Returns a simple greeting message.
**Response:**
```json
{
"message": "Hello from Flask API!",
"status": "success",
"version": "1.0"
}
```
### GET /api/info
Returns application information and available routes.
**Response:**
```json
{
"app_name": "Finger Web Flask App",
"routes": ["/", "/about", "/contact", "/api/hello", "/api/info"],
"framework": "Flask"
}
```
## 🎨 Customization
### Styling
- Edit `static/css/style.css` to customize the appearance
- The app uses Bootstrap 5 classes for responsive design
- Custom CSS variables and animations are included
### JavaScript
- Modify `static/js/main.js` for additional functionality
- Includes form validation, animations, and keyboard shortcuts
- API helper functions are available
### Templates
- All HTML templates extend `templates/base.html`
- Use Jinja2 template syntax for dynamic content
- Bootstrap components are readily available
## 🔍 Features in Detail
### Contact Form
- Client-side validation with real-time feedback
- Server-side validation and sanitization
- Flash messages for user feedback
- Form submission with loading states
### Responsive Design
- Mobile-first approach
- Bootstrap grid system
- Custom breakpoints and animations
- Touch-friendly interface
### Error Handling
- Custom 404 and 500 error pages
- Graceful error handling in routes
- User-friendly error messages
### JavaScript Features
- Form validation and enhancement
- Smooth scrolling navigation
- Card animations on scroll
- Keyboard shortcuts (Alt+H, Alt+A, Alt+C)
- API interaction helpers
## 🚀 Deployment
### Development
```bash
python app.py
```
### Docker Deployment
#### Option 1: Using Docker directly
```bash
# Build the Docker image
docker build -t finger-web .
# Run the container
docker run -d -p 5000:5000 --name finger-web-app finger-web
```
#### Option 2: Using Docker Compose (Recommended)
```bash
# Build and start the application
docker-compose up -d
# View logs
docker-compose logs -f
# Stop the application
docker-compose down
```
#### Docker Commands
```bash
# Build image
docker build -t finger-web .
# Run container with environment variables
docker run -d \
-p 5000:5000 \
-e FLASK_ENV=production \
-e SECRET_KEY=your-secret-key \
--name finger-web-app \
finger-web
# View container logs
docker logs finger-web-app
# Stop and remove container
docker stop finger-web-app
docker rm finger-web-app
```
### Production
For production deployment, consider using:
- **Docker** for containerization (included)
- **Docker Compose** for orchestration (included)
- **Gunicorn** as WSGI server
- **Nginx** as reverse proxy
- **Heroku**, **DigitalOcean**, or **AWS** for hosting
Example with Gunicorn:
```bash
pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:5000 app:app
```
## 🔒 Security Considerations
- Change the `SECRET_KEY` in production
- Use environment variables for sensitive data
- Enable HTTPS in production
- Implement rate limiting for forms
- Validate and sanitize all user inputs
## 🤝 Contributing
1. Fork the project
2. Create a feature branch
3. Make your changes
4. Test thoroughly
5. Submit a pull request
## 📝 License
This project is open source and available under the [MIT License](LICENSE).
## 📞 Support
If you encounter any issues or have questions:
1. Check the existing documentation
2. Review the code comments
3. Test in a clean virtual environment
4. Create an issue with detailed information
## 🎯 Future Enhancements
- Database integration with SQLAlchemy
- User authentication and sessions
- Email functionality for contact form
- Admin dashboard
- API rate limiting
- Unit tests
- CI/CD pipeline
- Kubernetes deployment manifests
- Monitoring and logging integration
---
**Built with ❤️ using Flask and Bootstrap**