Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
7bc4826
Initial work on the new website
shai-almog Feb 8, 2026
44c2be8
Initial design of the home page
shai-almog Feb 8, 2026
178762c
Renamed files to clean names
shai-almog Feb 8, 2026
3059858
Added initial getting started page
shai-almog Feb 8, 2026
c0ecf2e
Added support for light and dark mode switching
shai-almog Feb 8, 2026
3f6b26f
Fixed image links
shai-almog Feb 8, 2026
4d18be1
Initial work on the docs page
shai-almog Feb 9, 2026
9333cbb
Initial downloaded demos
shai-almog Feb 9, 2026
610b9f0
Refined demo page
shai-almog Feb 9, 2026
9f0461e
Fixed the individual demo pages
shai-almog Feb 9, 2026
619d930
Added courses and training material
shai-almog Feb 10, 2026
cdce1ee
Added support for cn1libs
shai-almog Feb 10, 2026
e2c112e
Updated compare page
shai-almog Feb 10, 2026
ccf1bda
Added search functionality
shai-almog Feb 10, 2026
10816dc
Initial work on the pricing page. More work still needed
shai-almog Feb 10, 2026
9e1d6d1
Initial commit of the blog
shai-almog Feb 10, 2026
1314244
Refined the FAQ and fixed menus
shai-almog Feb 10, 2026
1d00def
Refined the introduction
shai-almog Feb 10, 2026
edba064
Fixed the team page
shai-almog Feb 10, 2026
2acf0bf
Refined the environment tutorial
shai-almog Feb 11, 2026
eab30f9
Fixed blog
shai-almog Feb 11, 2026
338fe29
Fixed sitemap addresses
shai-almog Feb 11, 2026
319bff3
Added redirects
shai-almog Feb 11, 2026
0496cb8
Added how do I pages
shai-almog Feb 11, 2026
58f3232
Added RSS feed support
shai-almog Feb 12, 2026
c5bd3a3
Removed affiliate program and cleaned up press page
shai-almog Feb 12, 2026
e7295d2
Added crisp support and chat consent
shai-almog Feb 12, 2026
777cd76
Added videos page
shai-almog Feb 12, 2026
9d617ab
Normalized blog post headings
shai-almog Feb 12, 2026
3342009
Fixed pricing page to delegate to build cloud
shai-almog Feb 13, 2026
6f2a405
Added CI integration for workers, developer guide and javadocs
shai-almog Feb 13, 2026
15ab819
Fixes suggested by CI verification
shai-almog Feb 13, 2026
7db31b1
Second attempt to fix CI issues
shai-almog Feb 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
84 changes: 84 additions & 0 deletions .github/workflows/website-docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
name: Build Hugo Website

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
paths:
- 'docs/website/**'
- 'docs/developer-guide/**'
- 'CodenameOne/src/**'
- 'Ports/CLDC11/src/**'
- 'maven/javadoc-resources/**'
- '.github/scripts/build_javadocs.sh'
- 'scripts/website/**'
- '.github/workflows/website-docs.yml'
push:
branches: [main, master]
paths:
- 'docs/website/**'
- 'docs/developer-guide/**'
- 'CodenameOne/src/**'
- 'Ports/CLDC11/src/**'
- 'maven/javadoc-resources/**'
- '.github/scripts/build_javadocs.sh'
- 'scripts/website/**'
- '.github/workflows/website-docs.yml'
workflow_dispatch:

permissions:
contents: read

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Set up Hugo
uses: peaceiris/actions-hugo@v3
with:
hugo-version: 'latest'
extended: true

- name: Set up Java 25
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '25'

- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.3'

- name: Install Asciidoctor tooling
run: |
set -euo pipefail
gem install --no-document asciidoctor asciidoctor-pdf rouge

- name: Build website
run: |
set -euo pipefail
scripts/website/build.sh
env:
WEBSITE_INCLUDE_JAVADOCS: "true"
WEBSITE_INCLUDE_DEVGUIDE: "true"

- name: Upload built site artifact
uses: actions/upload-artifact@v4
with:
name: website-preview
path: docs/website/public
if-no-files-found: error

- name: Deploy to Cloudflare Pages
if: ${{ github.event_name == 'push' && (github.ref_name == 'main' || github.ref_name == 'master') }}
uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
command: >-
pages deploy docs/website/public
--project-name=${{ vars.CLOUDFLARE_PAGES_PROJECT_NAME || secrets.CLOUDFLARE_PAGES_PROJECT_NAME || 'codenameone' }}
--branch=${{ github.ref_name }}
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -82,3 +82,12 @@ pom.xml.tag
!.brokk/review.md
!.brokk/project.properties
dependency-reduced-pom.xml

# Hugo website generated artifacts
/docs/website/.hugo_build.lock
/docs/website/hugo_stats.json
/docs/website/resources/
/docs/website/public/
/docs/website/.cache/
/docs/website/.venv/
/docs/website/.venv-pagefind/
5 changes: 5 additions & 0 deletions docs/website/archetypes/default.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
+++
date = '{{ .Date }}'
draft = true
title = '{{ replace .File.ContentBaseName "-" " " | title }}'
+++
155 changes: 155 additions & 0 deletions docs/website/assets/css/extended/cn1-blog-index.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
.cn1-blog-index {
max-width: min(1220px, calc(100vw - 32px));
margin: 0 auto;
padding: 1.2rem 0 2rem;
}

.cn1-blog-index .post-header {
margin-bottom: 1.2rem;
}

.cn1-blog-index .post-title {
margin-bottom: 0.5rem;
}

.cn1-blog-index .post-description {
color: var(--secondary);
}

.cn1-blog-index__grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 1rem;
margin-top: 1rem;
}

.cn1-blog-index__card {
display: grid;
grid-template-columns: minmax(160px, 220px) minmax(0, 1fr);
gap: 0.9rem;
padding: 0.8rem;
border: 1px solid var(--border);
background: var(--entry);
}

.cn1-blog-index__thumb-link {
display: block;
align-self: start;
overflow: hidden;
aspect-ratio: 16 / 9;
background: var(--tertiary);
}

.cn1-blog-index__thumb {
width: 100%;
height: 100%;
object-fit: cover;
object-position: center;
display: block;
transform: scale(1.03);
transition: transform 220ms ease;
}

.cn1-blog-index__card:hover .cn1-blog-index__thumb {
transform: scale(1.08);
}

.cn1-blog-index__body {
min-width: 0;
}

.cn1-blog-index__title {
margin: 0 0 0.35rem;
font-size: 1.1rem;
line-height: 1.35;
}

.cn1-blog-index__title a {
color: var(--primary);
text-decoration: none;
}

.cn1-blog-index__title a:hover {
color: var(--tertiary);
}

.cn1-blog-index__meta {
display: flex;
align-items: center;
gap: 0.5rem;
margin: 0 0 0.45rem;
font-size: 0.82rem;
color: var(--secondary);
}

.cn1-blog-index__summary {
margin: 0;
color: var(--content);
font-size: 0.92rem;
line-height: 1.55;
}

.cn1-blog-index__pagination {
display: flex;
justify-content: center;
align-items: center;
flex-wrap: wrap;
gap: 0.5rem;
margin-top: 1.5rem;
}

.cn1-page-numbers {
display: flex;
align-items: center;
gap: 0.35rem;
}

.cn1-page-link {
min-width: 2rem;
height: 2rem;
padding: 0 0.55rem;
border: 1px solid var(--border);
background: var(--entry);
color: var(--primary);
display: inline-flex;
align-items: center;
justify-content: center;
text-decoration: none;
font-size: 0.86rem;
}

.cn1-page-ellipsis {
color: var(--secondary);
padding: 0 0.2rem;
font-weight: 600;
}

.cn1-page-link:hover {
background: var(--tertiary);
}

.cn1-page-link.is-current {
background: var(--primary);
color: var(--theme);
border-color: var(--primary);
}

.cn1-page-link.is-disabled {
opacity: 0.45;
}

.cn1-page-link--edge {
min-width: 3.2rem;
}

@media (max-width: 980px) {
.cn1-blog-index__grid {
grid-template-columns: 1fr;
}
}

@media (max-width: 700px) {
.cn1-blog-index__card {
grid-template-columns: 1fr;
}
}
99 changes: 99 additions & 0 deletions docs/website/assets/css/extended/cn1-blog-post.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
.cn1-blog-post .post-content {
max-width: 100%;
font-size: 17px;
line-height: 1.7;
}

.cn1-blog-post .post-content > p,
.cn1-blog-post .post-content > ul,
.cn1-blog-post .post-content > ol,
.cn1-blog-post .post-content > blockquote,
.cn1-blog-post .post-content > pre,
.cn1-blog-post .post-content > table,
.cn1-blog-post .post-content > .highlight {
margin-block: 1.1em;
}

.cn1-blog-post .post-content h2,
.cn1-blog-post .post-content h3,
.cn1-blog-post .post-content h4,
.cn1-blog-post .post-content h5 {
margin-top: 1.4em;
margin-bottom: 0.55em;
line-height: 1.28;
letter-spacing: normal;
text-wrap: balance;
}

.cn1-blog-post .post-content h2 {
font-size: 30px;
}

.cn1-blog-post .post-content h3 {
font-size: 24px;
}

.cn1-blog-post .post-content h4 {
font-size: 20px;
}

.cn1-blog-post .post-content h5 {
font-size: 18px;
}

.cn1-blog-post .post-content ul,
.cn1-blog-post .post-content ol {
padding-inline-start: 1.2em;
}

.cn1-blog-post .post-content li + li {
margin-top: 0.35em;
}

.cn1-blog-post .post-content blockquote {
border-left: 3px solid rgba(28, 81, 255, 0.55);
padding: 10px 14px;
background: rgba(28, 81, 255, 0.06);
border-radius: 8px;
}

body.dark .cn1-blog-post .post-content blockquote {
border-left-color: rgba(175, 193, 255, 0.65);
background: rgba(175, 193, 255, 0.09);
}

.cn1-blog-post .post-content table {
display: block;
overflow-x: auto;
border-collapse: collapse;
width: 100%;
}

.cn1-blog-post .post-content table th,
.cn1-blog-post .post-content table td {
border: 1px solid rgba(28, 81, 255, 0.18);
padding: 8px 10px;
}

body.dark .cn1-blog-post .post-content table th,
body.dark .cn1-blog-post .post-content table td {
border-color: rgba(175, 193, 255, 0.25);
}

@media (max-width: 900px) {
.cn1-blog-post .post-content {
font-size: 16px;
}

.cn1-blog-post .post-content h2 {
font-size: 26px;
}

.cn1-blog-post .post-content h3 {
font-size: 22px;
}

.cn1-blog-post .post-content h4 {
font-size: 19px;
}
}
Loading
Loading