You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

535 lines
27 KiB

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>GitHub Odoo Integration</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/all.min.css"/>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Plus+Jakarta+Sans:wght@600;700&display=swap"
rel="stylesheet"/>
<style>
body {
font-family: "Inter", sans-serif;
background: #fff;
color: #111;
}
h1, h2 {
font-family: "Plus Jakarta Sans", sans-serif;
font-weight: 700;
color: #111;
}
/* Hero */
.hero {
text-align: center;
padding: 80px 20px 60px;
}
.hero h1 {
font-size: 3rem;
font-weight: 700;
letter-spacing: -0.5px;
}
.hero h1 span {
color: #3B82F6;
}
.hero p {
font-size: 1.2rem;
color: #555;
margin-top: 10px;
}
.cta-btn {
margin-top: 25px;
padding: 12px 28px;
font-size: 1rem;
font-weight: 600;
border-radius: 30px;
border: none;
background: #111;
color: #fff;
text-decoration: none;
display: inline-block;
transition: all .3s ease;
}
.cta-btn:hover {
background: #333;
transform: translateY(-3px);
}
/* Section */
.section {
padding: 70px 0;
}
.section h2 {
font-size: 1.8rem;
margin-bottom: 16px;
}
.section p {
font-size: 1rem;
color: #444;
}
/* Screenshot Box */
.screenshot-box {
border-radius: 14px;
padding: 10px;
background: #f9f9f9;
}
.screenshot-box img {
border-radius: 10px;
width: 100%;
height: auto;
cursor: zoom-in;
transition: transform .3s;
}
.screenshot-box img:hover {
transform: scale(1.02);
}
/* Workflow */
.workflow-menu .nav-link {
font-weight: 600;
color: #444;
padding: 12px 16px;
border-radius: 8px;
margin-bottom: 6px;
transition: .3s;
}
.workflow-menu .nav-link.active {
background: #111;
color: #fff !important;
}
.workflow-menu .nav-link:hover { background: #f5f5f5; }
.workflow-menu .active:hover { background: #6b6060 !important; }
.workflow-content {
border-radius: 12px;
padding: 20px;
background: #fff;
box-shadow: 0 4px 14px rgba(0,0,0,.08);
height: 570px !important;
}
/* Lightbox */
.lightbox {
display: none;
position: fixed;
z-index: 1050;
top: 0; left: 0; right: 0; bottom: 0;
background: rgba(0,0,0,0.9);
justify-content: center;
align-items: center;
}
.lightbox img {
max-width: 90%;
max-height: 90%;
border-radius: 10px;
box-shadow: 0 8px 20px rgba(0,0,0,.4);
}
.lightbox:target { display: flex; }
.lightbox-close {
position: absolute;
top: 20px; right: 30px;
font-size: 2rem;
color: #fff;
text-decoration: none;
font-weight: bold;
}
/* Carousel Arrows */
.carousel-control-prev-icon,
.carousel-control-next-icon {
background-image: none !important;
}
.carousel-control-prev-icon::after,
.carousel-control-next-icon::after {
font-family: "Font Awesome 6 Free";
font-weight: 900;
font-size: 28px;
color: #111;
}
.carousel-control-prev-icon::after { content: "\f104"; }
.carousel-control-next-icon::after { content: "\f105"; }
/* Related Products */
.product-overlay {
position: relative;
border-radius: 14px;
overflow: hidden;
box-shadow: 0 6px 18px rgba(0,0,0,.1);
}
.product-overlay img {
width: 100%;
height: auto;
display: block;
transition: transform .4s ease;
}
.product-overlay:hover img {
transform: scale(1.08);
}
.product-overlay .overlay {
position: absolute;
inset: 0;
background: linear-gradient(to top,rgba(0,0,0,0.7),rgba(0,0,0,0));
color: #fff;
display: flex;
flex-direction: column;
justify-content: flex-end;
padding: 20px;
opacity: 0;
transition: opacity .4s ease;
}
.product-overlay:hover .overlay { opacity: 1; }
.overlay h5 { font-weight: 600; margin-bottom: 10px; }
/* Footer */
.footer {
margin-top: 60px;
text-align: center;
font-size: 14px;
color: #666;
padding: 20px 0;
border-top: 1px solid #eee;
}
</style>
</head>
<body>
<!-- Hero -->
<section class="hero">
<h1>GitHub <span>Odoo Integration</span></h1>
<p>Seamlessly connect GitHub with Odoo – manage repositories, branches, commits, issues & PRs from one place.</p>
<a href="#" class="cta-btn">Try Now</a>
</section>
<!-- Section 1 - Configuration Settings -->
<section class="section">
<div class="container">
<div class="row align-items-center">
<div class="col-md-4">
<h2>Configuration Settings</h2>
<p>Easily configure GitHub API credentials, webhook secrets, and access tokens directly from Odoo’s
settings menu.</p>
</div>
<div class="col-md-8">
<div class="screenshot-box">
<a href="#lightbox1"><img src="./assets/screenshots/config_settings.png"
alt="Configuration Settings"/></a>
</div>
</div>
</div>
</div>
</section>
<!-- Section 2 - Repository Setup -->
<section class="section bg-light">
<div class="container">
<div class="row align-items-center flex-md-row-reverse">
<div class="col-md-4">
<h2>Repository Setup</h2>
<p>Link one or more GitHub repositories with Odoo projects, sync metadata, and manage forks within
Odoo.</p>
</div>
<div class="col-md-8">
<div class="screenshot-box">
<a href="#lightbox2"><img src="./assets/screenshots/repository_setup.png"
alt="Repository Setup"/></a>
</div>
</div>
</div>
</div>
</section>
<section class="section">
<div class="container">
<div class="row align-items-center">
<div class="col-md-4">
<h2>Branch Management</h2>
<p>Easily configure GitHub API credentials, webhook secrets, and access tokens directly from Odoo’s
settings menu.</p>
</div>
<div class="col-md-8">
<div class="screenshot-box">
<a href="#lightbox22"><img src="./assets/screenshots/branch_management.png" alt="Branch Management"/></a>
</div>
</div>
</div>
</div>
</section>
<section class="section bg-light">
<div class="container">
<div class="row align-items-center flex-md-row-reverse">
<div class="col-md-4">
<h2>Commits Tracking</h2>
<p>Track commits linked to tasks and manage real-time updates via GitHub webhooks.</p>
</div>
<div class="col-md-8">
<div class="screenshot-box">
<a href="#lightbox23"><img src="./assets/screenshots/commits.png" alt="Commits & PR Tracking"/></a>
</div>
</div>
</div>
</div>
</section>
<!-- Workflow Section -->
<section class="section">
<div class="container">
<h2 class="text-center mb-5">Workflow Demo</h2>
<div class="row">
<!-- Sidebar -->
<div class="col-md-3">
<ul class="nav flex-column nav-pills workflow-menu" id="workflow-tabs">
<li><a class="nav-link active" data-bs-toggle="pill" href="#wf-config"><i
class="fa-solid fa-gear me-2"></i> Configuration</a></li>
<li><a class="nav-link" data-bs-toggle="pill" href="#wf-repo"><i
class="fa-solid fa-database me-2"></i> Repositories</a></li>
<li><a class="nav-link" data-bs-toggle="pill" href="#wf-branch"><i
class="fa-solid fa-code-branch me-2"></i> Branches</a></li>
<li><a class="nav-link" data-bs-toggle="pill" href="#wf-commit"><i
class="fa-solid fa-clock-rotate-left me-2"></i> Commits</a></li>
<li><a class="nav-link" data-bs-toggle="pill" href="#wf-pr"><i
class="fa-solid fa-code-pull-request me-2"></i> Pull Requests</a></li>
<li><a class="nav-link" data-bs-toggle="pill" href="#wf-issue"><i class="fa-solid fa-bug me-2"></i>
Issues</a></li>
</ul>
</div>
<!-- Content -->
<div class="col-md-9">
<div class="tab-content workflow-content">
<div class="tab-pane fade show active" id="wf-config">
<h4>Configuration</h4>
<div id="carousel-config" class="carousel slide mt-3" data-bs-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active"><p>1.Choose the github user access rights from the
user settings.</p>
<div class="screenshot-box"><a href="#lightbox3"><img
src="./assets/screenshots/config_settings_3.png"
class="d-block w-100"/></a></div>
</div>
<div class="carousel-item active"><p>2.Open the github configuration settings to setup
the API tokens and webhooks</p>
<div class="screenshot-box"><a href="#lightbox9"><img
src="./assets/screenshots/config_settings_1.png"
class="d-block w-100"/></a></div>
</div>
<div class="carousel-item"><p>3.Set up API tokens and webhooks easily inside Odoo.</p>
<div class="screenshot-box"><a href="#lightbox10"><img
src="./assets/screenshots/config_settings.png"
class="d-block w-100"/></a></div>
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#carousel-config"
data-bs-slide="prev"><span class="carousel-control-prev-icon"></span></button>
<button class="carousel-control-next" type="button" data-bs-target="#carousel-config"
data-bs-slide="next"><span class="carousel-control-next-icon"></span></button>
</div>
</div>
<div class="tab-pane fade" id="wf-repo">
<h4>Repositories</h4>
<div id="carousel-repo" class="carousel slide mt-3" data-bs-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active"><p>1.Enter the repository name and owner in the form
view, then click the <strong>Setup Webhook</strong> button to configure the webhook
in the GitHub repository.</p>
<div class="screenshot-box"><a href="#lightbox4"><img
src="./assets/screenshots/repository_setup_1.png"
class="d-block w-100"/></a></div>
</div>
<div class="carousel-item"><p>2.If the webhook is created successfully, a success
message will appear in the chatter, and the webhook URL will be generated.</p>
<div class="screenshot-box"><a href="#lightbox11"><img
src="./assets/screenshots/repository_setup_2.png"
class="d-block w-100"/></a></div>
</div>
<div class="carousel-item"><p>3.Click on the <strong>Sync Repository</strong> button to
synchronize all GitHub repository data into the Odoo repository.</p>
<div class="screenshot-box"><a href="#lightbox12"><img
src="./assets/screenshots/repository_setup_3.png"
class="d-block w-100"/></a></div>
</div>
<div class="carousel-item"><p>4. After the repository is successfully synced, the state
will change to <strong>Success</strong>, and all other details will be fetched.</p>
<div class="screenshot-box"><a href="#lightbox13"><img
src="./assets/screenshots/repository_setup_4.png"
class="d-block w-100"/></a></div>
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#carousel-repo"
data-bs-slide="prev"><span class="carousel-control-prev-icon"></span></button>
<button class="carousel-control-next" type="button" data-bs-target="#carousel-repo"
data-bs-slide="next"><span class="carousel-control-next-icon"></span></button>
</div>
</div>
<div class="tab-pane fade" id="wf-branch">
<h4>Branches</h4>
<div id="carousel-branch" class="carousel slide mt-3" data-bs-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active"><p>1.By clicking on the Branches, you can view all the
corresponding branches linked to each repository.</p>
<div class="screenshot-box"><a href="#lightbox5"><img
src="./assets/screenshots/branch_management_1.png"
class="d-block w-100"/></a></div>
</div>
<div class="carousel-item"><p>2.From the Branch form view, you can see all the details
related to the corresponding branch.</p>
<div class="screenshot-box"><a href="#lightbox14"><img
src="./assets/screenshots/branch_management_2.png"
class="d-block w-100"/></a></div>
</div>
<div class="carousel-item"><p>3.Click on the <strong>Sync Branch</strong> button to
synchronise the branch details from the github.</p>
<div class="screenshot-box"><a href="#lightbox15"><img
src="./assets/screenshots/branch_management_3.png"
class="d-block w-100"/></a></div>
</div>
<div class="carousel-item"><p>4.From the repository record, you can create a new branch
in GitHub directly from Odoo.</p>
<div class="screenshot-box"><a href="#lightbox16"><img
src="./assets/screenshots/branch_management_4.png"
class="d-block w-100"/></a></div>
</div>
<div class="carousel-item">
<div class="screenshot-box"><a href="#lightbox17"><img
src="./assets/screenshots/branch_management_5.png"
class="d-block w-100"/></a></div>
</div>
<div class="carousel-item">
<div class="screenshot-box"><a href="#lightbox18"><img
src="./assets/screenshots/branch_management_6.png"
class="d-block w-100"/></a></div>
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#carousel-branch"
data-bs-slide="prev"><span class="carousel-control-prev-icon"></span></button>
<button class="carousel-control-next" type="button" data-bs-target="#carousel-branch"
data-bs-slide="next"><span class="carousel-control-next-icon"></span></button>
</div>
</div>
<div class="tab-pane fade" id="wf-commit">
<h4>Commits</h4>
<p>Track commits per branch and auto-link with tasks.</p>
<div id="carousel-commit" class="carousel slide mt-3" data-bs-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active">
<div class="screenshot-box"><a href="#lightbox6"><img
src="./assets/screenshots/commits.png"
class="d-block w-100"/></a></div>
</div>
<div class="carousel-item">
<div class="screenshot-box"><a href="#lightbox19"><img
src="./assets/screenshots/commit_1.png"
class="d-block w-100"/></a></div>
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#carousel-commit"
data-bs-slide="prev"><span class="carousel-control-prev-icon"></span></button>
<button class="carousel-control-next" type="button" data-bs-target="#carousel-commit"
data-bs-slide="next"><span class="carousel-control-next-icon"></span></button>
</div>
</div>
<div class="tab-pane fade" id="wf-pr">
<h4>Pull Requests</h4>
<p>Monitor open, closed, and merged pull requests.</p>
<div id="carousel-pr" class="carousel slide mt-3" data-bs-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active">
<div class="screenshot-box"><a href="#lightbox7"><img
src="./assets/screenshots/pr_view_1.png"
class="d-block w-100"/></a></div>
</div>
<div class="carousel-item">
<div class="screenshot-box"><a href="#lightbox20"><img
src="./assets/screenshots/pr_view_2.png"
class="d-block w-100"/></a></div>
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#carousel-pr"
data-bs-slide="prev"><span class="carousel-control-prev-icon"></span></button>
<button class="carousel-control-next" type="button" data-bs-target="#carousel-pr"
data-bs-slide="next"><span class="carousel-control-next-icon"></span></button>
</div>
</div>
<div class="tab-pane fade" id="wf-issue">
<h4>Issues</h4>
<p>Track issues per repositories and auto-link with tasks.</p>
<div id="carousel-is" class="carousel slide mt-3" data-bs-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active">
<div class="screenshot-box"><a href="#lightbox8"><img src="./assets/screenshots/is_view_1.png"
class="d-block w-100"/></a></div>
</div>
<div class="carousel-item">
<div class="screenshot-box"><a href="#lightbox21"><img src="./assets/screenshots/is_view_2.png"
class="d-block w-100"/></a></div>
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#carousel-is"
data-bs-slide="prev"><span class="carousel-control-prev-icon"></span></button>
<button class="carousel-control-next" type="button" data-bs-target="#carousel-is"
data-bs-slide="next"><span class="carousel-control-next-icon"></span></button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Lightbox Modals -->
<div id="lightbox1" class="lightbox"><a href="#" class="lightbox-close">&times;</a><img
src="./assets/screenshots/config_settings.png"/></div>
<div id="lightbox2" class="lightbox"><a href="#" class="lightbox-close">&times;</a><img
src="./assets/screenshots/repository_setup.png"/></div>
<div id="lightbox3" class="lightbox"><a href="#" class="lightbox-close">&times;</a><img
src="./assets/screenshots/config_settings_3.png"/></div>
<div id="lightbox9" class="lightbox"><a href="#" class="lightbox-close">&times;</a><img
src="./assets/screenshots/config_settings_1.png"/></div>
<div id="lightbox10" class="lightbox"><a href="#" class="lightbox-close">&times;</a><img
src="./assets/screenshots/config_settings.png"/></div>
<div id="lightbox4" class="lightbox"><a href="#" class="lightbox-close">&times;</a><img
src="./assets/screenshots/repository_setup_1.png"/></div>
<div id="lightbox11" class="lightbox"><a href="#" class="lightbox-close">&times;</a><img
src="./assets/screenshots/repository_setup_2.png"/></div>
<div id="lightbox12" class="lightbox"><a href="#" class="lightbox-close">&times;</a><img
src="./assets/screenshots/repository_setup_3.png"/></div>
<div id="lightbox13" class="lightbox"><a href="#" class="lightbox-close">&times;</a><img
src="./assets/screenshots/repository_setup_4.png"/></div>
<div id="lightbox5" class="lightbox"><a href="#" class="lightbox-close">&times;</a><img
src="./assets/screenshots/branch_management_1.png"/></div>
<div id="lightbox14" class="lightbox"><a href="#" class="lightbox-close">&times;</a><img
src="./assets/screenshots/branch_management_2.png"/></div>
<div id="lightbox15" class="lightbox"><a href="#" class="lightbox-close">&times;</a><img
src="./assets/screenshots/branch_management_3.png"/></div>
<div id="lightbox16" class="lightbox"><a href="#" class="lightbox-close">&times;</a><img
src="./assets/screenshots/branch_management_4.png"/></div>
<div id="lightbox17" class="lightbox"><a href="#" class="lightbox-close">&times;</a><img
src="./assets/screenshots/branch_management_5.png"/></div>
<div id="lightbox18" class="lightbox"><a href="#" class="lightbox-close">&times;</a><img
src="./assets/screenshots/branch_management_6.png"/></div>
<div id="lightbox6" class="lightbox"><a href="#" class="lightbox-close">&times;</a><img
src="./assets/screenshots/commits.png"/></div>
<div id="lightbox19" class="lightbox"><a href="#" class="lightbox-close">&times;</a><img
src="./assets/screenshots/commit_1.png"/></div>
<div id="lightbox7" class="lightbox"><a href="#" class="lightbox-close">&times;</a><img
src="./assets/screenshots/pr_view_1.png"/></div>
<div id="lightbox20" class="lightbox"><a href="#" class="lightbox-close">&times;</a><img
src="./assets/screenshots/pr_view_2.png"/></div>
<div id="lightbox8" class="lightbox"><a href="#" class="lightbox-close">&times;</a><img
src="./assets/screenshots/is_view_1.png"/></div>
<div id="lightbox21" class="lightbox"><a href="#" class="lightbox-close">&times;</a><img
src="./assets/screenshots/is_view_2.png"/></div>
<div id="lightbox22" class="lightbox"><a href="#" class="lightbox-close">&times;</a><img
src="./assets/screenshots/branch_management.png"/></div>
<div id="lightbox23" class="lightbox"><a href="#" class="lightbox-close">&times;</a><img
src="./assets/screenshots/commits.png"/></div>
<!-- Footer -->
<div class="footer">
<p>© 2025 Your Company | GitHub Odoo Integration</p>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>