feat: Add comprehensive documentation suite and reorganize project structure
- Created complete documentation in docs/ directory - Added PROJECT_OVERVIEW.md with feature highlights and getting started guide - Added ARCHITECTURE.md with system design and technical details - Added SECURITY.md with comprehensive security implementation guide - Added DEVELOPMENT.md with development workflows and best practices - Added DEPLOYMENT.md with production deployment instructions - Added API.md with complete REST API documentation - Added CONTRIBUTING.md with contribution guidelines - Added CHANGELOG.md with version history and migration notes - Reorganized all documentation files into docs/ directory for better organization - Updated README.md with proper documentation links and quick navigation - Enhanced project structure with professional documentation standards
This commit is contained in:
3
f_scripts/fe/css/channel.init.min.css
vendored
Normal file
3
f_scripts/fe/css/channel.init.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
f_scripts/fe/css/custom.min.css
vendored
Normal file
1
f_scripts/fe/css/custom.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
146
f_scripts/fe/css/enhanced.css
Normal file
146
f_scripts/fe/css/enhanced.css
Normal file
@@ -0,0 +1,146 @@
|
||||
/* EasyStream Enhanced Styles */
|
||||
.video-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
||||
gap: 20px;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.video-item {
|
||||
background: #fff;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
|
||||
overflow: hidden;
|
||||
transition: transform 0.2s;
|
||||
}
|
||||
|
||||
.video-item:hover {
|
||||
transform: translateY(-2px);
|
||||
}
|
||||
|
||||
.video-thumb {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 180px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.video-thumb img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.duration {
|
||||
position: absolute;
|
||||
bottom: 8px;
|
||||
right: 8px;
|
||||
background: rgba(0,0,0,0.8);
|
||||
color: white;
|
||||
padding: 2px 6px;
|
||||
border-radius: 4px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.video-info {
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
.video-info h3 {
|
||||
margin: 0 0 8px 0;
|
||||
font-size: 16px;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
.video-info h3 a {
|
||||
color: #333;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.video-info h3 a:hover {
|
||||
color: #007bff;
|
||||
}
|
||||
|
||||
.video-meta {
|
||||
color: #666;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.upload-container {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.form-group {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.form-group label {
|
||||
display: block;
|
||||
margin-bottom: 5px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.form-group input,
|
||||
.form-group textarea,
|
||||
.form-group select {
|
||||
width: 100%;
|
||||
padding: 10px;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 4px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.btn-upload {
|
||||
background: #007bff;
|
||||
color: white;
|
||||
padding: 12px 24px;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.btn-upload:hover {
|
||||
background: #0056b3;
|
||||
}
|
||||
|
||||
.main-nav ul {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
display: flex;
|
||||
background: #333;
|
||||
}
|
||||
|
||||
.main-nav li {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.main-nav a {
|
||||
display: block;
|
||||
padding: 15px 20px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
transition: background 0.2s;
|
||||
}
|
||||
|
||||
.main-nav a:hover {
|
||||
background: #555;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
width: 100%;
|
||||
height: 20px;
|
||||
background: #f0f0f0;
|
||||
border-radius: 10px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
height: 100%;
|
||||
background: #007bff;
|
||||
width: 0%;
|
||||
transition: width 0.3s;
|
||||
}
|
||||
313
f_scripts/fe/css/homepage.css
Normal file
313
f_scripts/fe/css/homepage.css
Normal file
@@ -0,0 +1,313 @@
|
||||
/* Homepage Styles */
|
||||
.homepage {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
/* Hero Section */
|
||||
.hero-section {
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
color: white;
|
||||
padding: 60px 40px;
|
||||
border-radius: 12px;
|
||||
margin: 20px 0 40px 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.hero-content h1 {
|
||||
font-size: 3rem;
|
||||
margin-bottom: 16px;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.hero-content p {
|
||||
font-size: 1.2rem;
|
||||
margin-bottom: 30px;
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
.hero-actions {
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.hero-actions .btn {
|
||||
margin: 0 10px;
|
||||
padding: 12px 30px;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
.hero-stats {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
gap: 40px;
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.stat-item {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.stat-number {
|
||||
display: block;
|
||||
font-size: 2rem;
|
||||
font-weight: bold;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.stat-label {
|
||||
font-size: 0.9rem;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
/* Section Headers */
|
||||
.section-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 24px;
|
||||
padding-bottom: 12px;
|
||||
border-bottom: 2px solid #f0f0f0;
|
||||
}
|
||||
|
||||
.section-header h2 {
|
||||
font-size: 1.8rem;
|
||||
margin: 0;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.view-all {
|
||||
color: #007bff;
|
||||
text-decoration: none;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.view-all:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* Video Grid */
|
||||
.video-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
|
||||
gap: 24px;
|
||||
margin-bottom: 50px;
|
||||
}
|
||||
|
||||
.featured-grid {
|
||||
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
|
||||
}
|
||||
|
||||
/* Video Cards */
|
||||
.video-card {
|
||||
background: white;
|
||||
border-radius: 12px;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.1);
|
||||
transition: transform 0.2s, box-shadow 0.2s;
|
||||
}
|
||||
|
||||
.video-card:hover {
|
||||
transform: translateY(-4px);
|
||||
box-shadow: 0 8px 24px rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.video-thumbnail {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 160px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.video-thumbnail img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
transition: transform 0.3s;
|
||||
}
|
||||
|
||||
.video-card:hover .video-thumbnail img {
|
||||
transform: scale(1.05);
|
||||
}
|
||||
|
||||
.duration {
|
||||
position: absolute;
|
||||
bottom: 8px;
|
||||
right: 8px;
|
||||
background: rgba(0,0,0,0.8);
|
||||
color: white;
|
||||
padding: 4px 8px;
|
||||
border-radius: 4px;
|
||||
font-size: 12px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.play-overlay {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
background: rgba(255,255,255,0.9);
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
opacity: 0;
|
||||
transition: opacity 0.2s;
|
||||
}
|
||||
|
||||
.video-card:hover .play-overlay {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.play-overlay i {
|
||||
font-size: 24px;
|
||||
color: #007bff;
|
||||
margin-left: 3px;
|
||||
}
|
||||
|
||||
.video-details {
|
||||
padding: 16px;
|
||||
}
|
||||
|
||||
.video-title {
|
||||
margin: 0 0 8px 0;
|
||||
font-size: 1rem;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
.video-title a {
|
||||
color: #333;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.video-title a:hover {
|
||||
color: #007bff;
|
||||
}
|
||||
|
||||
.video-meta {
|
||||
font-size: 0.85rem;
|
||||
color: #666;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
.video-meta a {
|
||||
color: #007bff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.video-meta a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.video-meta span {
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
/* Categories Grid */
|
||||
.categories-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
|
||||
gap: 20px;
|
||||
margin-bottom: 50px;
|
||||
}
|
||||
|
||||
.category-card {
|
||||
background: white;
|
||||
padding: 24px;
|
||||
border-radius: 12px;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
color: #333;
|
||||
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
|
||||
transition: transform 0.2s, box-shadow 0.2s;
|
||||
}
|
||||
|
||||
.category-card:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 16px rgba(0,0,0,0.15);
|
||||
color: #333;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.category-icon {
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
background: #f8f9fa;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin: 0 auto 16px auto;
|
||||
}
|
||||
|
||||
.category-icon i {
|
||||
font-size: 24px;
|
||||
color: #007bff;
|
||||
}
|
||||
|
||||
.category-card h3 {
|
||||
margin: 0 0 8px 0;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
.video-count {
|
||||
color: #666;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
/* Call to Action */
|
||||
.cta-section {
|
||||
background: #f8f9fa;
|
||||
padding: 60px 40px;
|
||||
border-radius: 12px;
|
||||
text-align: center;
|
||||
margin: 40px 0;
|
||||
}
|
||||
|
||||
.cta-content h2 {
|
||||
font-size: 2rem;
|
||||
margin-bottom: 16px;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.cta-content p {
|
||||
font-size: 1.1rem;
|
||||
color: #666;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.btn-large {
|
||||
padding: 16px 40px;
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
/* Responsive Design */
|
||||
@media (max-width: 768px) {
|
||||
.hero-section {
|
||||
padding: 40px 20px;
|
||||
}
|
||||
|
||||
.hero-content h1 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
.hero-stats {
|
||||
gap: 20px;
|
||||
}
|
||||
|
||||
.stat-number {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
.video-grid {
|
||||
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.categories-grid {
|
||||
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
|
||||
}
|
||||
}
|
||||
25
f_scripts/fe/css/icomoon.css
Normal file
25
f_scripts/fe/css/icomoon.css
Normal file
File diff suppressed because one or more lines are too long
1991
f_scripts/fe/css/icons.css
Normal file
1991
f_scripts/fe/css/icons.css
Normal file
File diff suppressed because it is too large
Load Diff
1
f_scripts/fe/css/init0.min.css
vendored
Normal file
1
f_scripts/fe/css/init0.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
BIN
f_scripts/fe/css/lb/blank.gif
Normal file
BIN
f_scripts/fe/css/lb/blank.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 43 B |
BIN
f_scripts/fe/css/lb/fancybox_loading.gif
Normal file
BIN
f_scripts/fe/css/lb/fancybox_loading.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.4 KiB |
BIN
f_scripts/fe/css/lb/fancybox_loading@2x.gif
Normal file
BIN
f_scripts/fe/css/lb/fancybox_loading@2x.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 14 KiB |
BIN
f_scripts/fe/css/lb/fancybox_overlay.png
Normal file
BIN
f_scripts/fe/css/lb/fancybox_overlay.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1003 B |
BIN
f_scripts/fe/css/lb/fancybox_sprite.png
Normal file
BIN
f_scripts/fe/css/lb/fancybox_sprite.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
BIN
f_scripts/fe/css/lb/fancybox_sprite@2x.png
Normal file
BIN
f_scripts/fe/css/lb/fancybox_sprite@2x.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.4 KiB |
1
f_scripts/fe/css/login.min.css
vendored
Normal file
1
f_scripts/fe/css/login.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.login-page-old{width:480px;position:relative;margin:0 auto;left:30%;margin-left:-240px;padding:20px 0}.login-margins{margin:20px}.promo-list li{width:60%;margin:0 auto;font-size:14px;color:#777;padding:5px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.promo-list li i{margin-right:5px;color:#444}.login-page .user-form article{text-align:left}#password-recovery-form article h3{text-align:left;display:block}.login-page .tabs .content-title{padding-left:0}.login-page .content-title [class^="icon-"]{margin-right:0}.form-buttons{margin-bottom:0;margin-top:15px}.login-page .outer-border-wrapper{border:1px solid rgba(40,44,42,0.1);background:white;padding:0 20px;border-top:0}.login-page.payment-page{padding-top:0}.user-form{line-height:initial}.user-form .row{display:block;width:100%}.user-form .input-signin{width:100%}.user-form a{color:#000}.login-page .tabs-style-topline nav li.tab-current a{background:white;box-shadow:inset 0 3px 0 #06a2cb;color:#06a2cb}.user-form .label-signin,.user-form span.input-signin.top-padding2{color:#8f8f8f;font-size:14px;font-weight:300;margin-bottom:0;margin-top:0;line-height:30px}.user-form .line{margin-bottom:10px}.user-form input[type="text"],.user-form input[type="email"],.user-form input[type="password"]{background:none repeat scroll 0 0 #f5f5f5;border:medium none;box-shadow:0 2px 3px rgba(0,0,0,0.1) inset;clear:both;font-size:.75rem;margin-bottom:5px;padding:15px;width:100%}.user-form input[type="text"]:focus,.user-form input[type="email"]:focus,.user-form input[type="password"]:focus,.user-form textarea:focus{background:none repeat scroll 0 0 #fff;box-shadow:0 0 0 2px #06a2cb,0 2px 3px rgba(0,0,0,0.2) inset,0 5px 5px rgba(0,0,0,0.15);outline:medium none}span.input-signin button.search-button.form-button{background-color:#06a2cb;box-shadow:none;color:white;cursor:pointer;font-family:"Roboto",Arial,Helvetica,sans-serif;font-size:13px;font-weight:500;margin-left:4px;margin-right:10px;margin-bottom:20px;padding:10px;transition:all .3s ease 0s;width:40%;border:0}span.input-signin button.search-button.form-button.fb-login-button{background-color:#3b5998;box-shadow:none}span.input-signin button.search-button.form-button.fb-login-button:hover{background-color:#4669B4;color:#fff}span.input-signin button.search-button.form-button.fb-login-button:hover::before{color:#fff;margin-right:10px;border-right:1px solid #fff}span.input-signin button.search-button.form-button.gp-login-button{background-color:#dd4b39;box-shadow:none}span.input-signin button.search-button.form-button.gp-login-button:hover{background-color:#E3695A;color:#fff}span.input-signin button.search-button.form-button.gp-login-button:hover::before{color:#fff;margin-right:10px;border-right:1px solid #fff}span.input-signin button.search-button.form-button::before{font-family:"icomoon";content:"\e605";color:white;margin-right:10px;border-right:1px solid white;padding-right:10px;transition:all .3s ease 0s}span.input-signin button.search-button.form-button.auth-check-button::before{font-family:"icomoon";content:"\e99b"}span.input-signin button.search-button.form-button.fb-login-button::before{font-family:"icomoon";content:"\e648"}span.input-signin button.search-button.form-button.gp-login-button::before{font-family:"icomoon";content:"\ea80"}span.input-signin button.search-button.form-button.apply-button::before{font-family:"icomoon";content:"\f00c"}span.input-signin button.search-button.form-button.continue-button::before{font-family:"icomoonBe";content:"\f03e"}span.input-signin button.search-button.form-button:hover{background-color:#92cefb;color:#fff}span.input-signin button.search-button.form-button:hover::before{color:#fff;margin-right:10px;border-right:1px solid #fff}#r-image,#l-image{cursor:pointer}#membership_info .ul-disc-list{margin-top:10px}#membership_info .ul-disc-list li{font-size:13px}#membership_info .ul-disc-list li::before{font-family:"icomoon";content:"\f00c";margin-right:5px}.ul-disc-list .bold{font-weight:bold}.pk-descr{margin-top:10px;font-size:14px}.dark .pk-text{color:#fff}.pk-text{color:#505050}.blued{color:#06a2cb}#auth-register-form h4{font-weight:bold;color:#06a2cb;margin-bottom:20px}.auth-username-check-response{padding:0 10px 10px 0}.err-red{color:red}.conf-green{color:green}.hr .inner{background:#fff;border-radius:100px;display:inline-block;width:auto;padding:9px 10px;font-size:15px;font-size:16px;font-style:italic;line-height:0}.hr{box-shadow:0 1px 0 #fff,transparent 0 0 0;border-bottom:1px solid #ddd;margin:0 auto 40px !important;position:relative;height:8px;text-align:center;line-height:initial}.tpl_signin .hr{padding-top:20px}#reset-password-button{max-width:150px;margin-top:20px}
|
||||
1
f_scripts/fe/css/media_queries.min.css
vendored
Normal file
1
f_scripts/fe/css/media_queries.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
f_scripts/fe/css/theme/darktheme.min.css
vendored
Normal file
1
f_scripts/fe/css/theme/darktheme.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
f_scripts/fe/css/theme/theme.min.css
vendored
Normal file
1
f_scripts/fe/css/theme/theme.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
f_scripts/fe/css/theme/yt.min.css
vendored
Normal file
1
f_scripts/fe/css/theme/yt.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
f_scripts/fe/css/view.min.css
vendored
Normal file
1
f_scripts/fe/css/view.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user