Kumi
9e5f237b6f
Implemented the foundation of a Flask application designed to manage email requests with rate limiting and SQLite database integration. This includes setting up basic app infrastructure, such as Flask app initialization, database creation with email request tracking, SMTP configuration for email sending, and rate limiting based on IP addresses to prevent abuse. Additionally, the commit introduces the core frontend structure along with styling, utilizing templates for basic request handling and display. The `.gitignore` file was also set up to ignore common Python and development artifacts. Relevant dependencies required for the application are outlined in `requirements.txt`. This setup lays the groundwork for future expansions, including more detailed request handling, user authentication, and enhanced security features. No specific issues are addressed in this commit; it represents the initial application setup and starting point for further development.
165 lines
No EOL
2.3 KiB
CSS
165 lines
No EOL
2.3 KiB
CSS
/* Reset and base styles */
|
|
* {
|
|
box-sizing: border-box;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
body {
|
|
font-family: 'Roboto', sans-serif;
|
|
background-color: #f7f7f7;
|
|
color: #333;
|
|
line-height: 1.6;
|
|
}
|
|
|
|
a {
|
|
color: #5d5d5d;
|
|
text-decoration: none;
|
|
}
|
|
|
|
a:hover {
|
|
color: #333;
|
|
}
|
|
|
|
.container {
|
|
width: 90%;
|
|
max-width: 1200px;
|
|
margin: auto;
|
|
overflow: hidden;
|
|
}
|
|
|
|
/* Header */
|
|
header {
|
|
background-color: #fff;
|
|
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
|
padding: 20px 0;
|
|
}
|
|
|
|
header h1 {
|
|
color: #5d5d5d;
|
|
text-align: center;
|
|
margin: 0;
|
|
font-size: 36px;
|
|
}
|
|
|
|
header nav ul {
|
|
list-style: none;
|
|
text-align: center;
|
|
padding: 0;
|
|
}
|
|
|
|
header nav ul li {
|
|
display: inline;
|
|
margin: 0 15px;
|
|
}
|
|
|
|
header nav ul li a {
|
|
color: #5d5d5d;
|
|
font-weight: 700;
|
|
font-size: 18px;
|
|
}
|
|
|
|
/* Hero Section */
|
|
.hero {
|
|
background-color: #e8e8e8;
|
|
padding: 50px 0;
|
|
margin-bottom: 40px;
|
|
}
|
|
|
|
.hero h2 {
|
|
text-align: center;
|
|
margin-bottom: 10px;
|
|
color: #333;
|
|
font-size: 28px;
|
|
}
|
|
|
|
.hero p {
|
|
text-align: center;
|
|
font-size: 18px;
|
|
color: #666;
|
|
}
|
|
|
|
/* IP Display Cards */
|
|
.ip-display {
|
|
display: flex;
|
|
justify-content: space-around;
|
|
flex-wrap: wrap;
|
|
gap: 20px;
|
|
margin-bottom: 40px;
|
|
}
|
|
|
|
.ip-card {
|
|
background-color: #fff;
|
|
padding: 30px 10px;
|
|
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
|
|
border-radius: 8px;
|
|
flex-basis: calc(50% - 10px);
|
|
text-align: center;
|
|
}
|
|
|
|
.ip-card h3 {
|
|
margin-bottom: 15px;
|
|
color: #5d5d5d;
|
|
font-size: 22px;
|
|
}
|
|
|
|
.ip-card p {
|
|
font-size: 20px;
|
|
color: #333;
|
|
word-break: break-all;
|
|
}
|
|
|
|
/* About Section */
|
|
#about {
|
|
text-align: center;
|
|
margin-bottom: 40px;
|
|
padding: 0 20px;
|
|
}
|
|
|
|
#about h2 {
|
|
margin-bottom: 15px;
|
|
color: #333;
|
|
font-size: 24px;
|
|
}
|
|
|
|
#about p {
|
|
font-size: 18px;
|
|
color: #666;
|
|
}
|
|
|
|
/* API Section */
|
|
#api {
|
|
text-align: center;
|
|
margin-bottom: 40px;
|
|
padding: 0 20px;
|
|
}
|
|
|
|
#api h2 {
|
|
margin-bottom: 15px;
|
|
color: #333;
|
|
font-size: 24px;
|
|
}
|
|
|
|
#api p {
|
|
font-size: 18px;
|
|
color: #666;
|
|
}
|
|
|
|
/* Footer */
|
|
footer {
|
|
background-color: #fff;
|
|
box-shadow: 0 -2px 4px rgba(0,0,0,0.1);
|
|
text-align: center;
|
|
padding: 20px;
|
|
position: relative;
|
|
}
|
|
|
|
footer p {
|
|
margin: 0;
|
|
color: #5d5d5d;
|
|
}
|
|
|
|
footer a {
|
|
color: #5d5d5d;
|
|
font-weight: 700;
|
|
} |