Initial commit

This commit is contained in:
Sebastian Korotkiewicz 2025-04-18 18:15:27 +02:00
commit d3978ee3e4
Signed by: skorotkiewicz
GPG key ID: 5BDC557B496BDB0D
11 changed files with 1053 additions and 0 deletions

391
src/styles.scss Normal file
View file

@ -0,0 +1,391 @@
// Variables
$primary: #4a6fa5;
$primary-dark: #385580;
$secondary: #6c5ce7;
$light: #f8f9fa;
$dark: #212529;
$success: #28a745;
$gray: #6c757d;
$gray-light: #e9ecef;
// Base styles
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
body {
background-color: $light;
color: $dark;
line-height: 1.6;
}
// Header styles
header {
background: linear-gradient(135deg, $primary, $secondary);
color: white;
padding: 2rem 0;
text-align: center;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
.logo {
font-size: 2.5rem;
font-weight: bold;
margin-bottom: 1rem;
}
.tagline {
font-size: 1.2rem;
opacity: 0.9;
}
}
// Navigation
nav {
background-color: white;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
position: sticky;
top: 0;
z-index: 100;
.navbar {
display: flex;
justify-content: space-between;
align-items: center;
max-width: 1200px;
margin: 0 auto;
padding: 0 1rem;
}
.nav-brand {
font-size: 1.5rem;
font-weight: bold;
color: $primary;
text-decoration: none;
padding: 1rem 0;
}
.nav-links {
display: flex;
list-style: none;
li a {
display: block;
padding: 1rem;
color: $dark;
text-decoration: none;
transition: color 0.3s;
&:hover {
color: $primary;
}
}
}
}
// Container
.container {
max-width: 1200px;
margin: 0 auto;
padding: 2rem 1rem;
}
// Hero section
.hero {
text-align: center;
padding: 3rem 1rem;
h1 {
font-size: 2.5rem;
margin-bottom: 1rem;
color: $primary;
}
p {
font-size: 1.2rem;
color: $gray;
margin-bottom: 2rem;
max-width: 800px;
margin-left: auto;
margin-right: auto;
}
}
// Buttons
.btn {
display: inline-block;
padding: 0.8rem 1.5rem;
background-color: $primary;
color: white;
text-decoration: none;
border-radius: 4px;
font-weight: 500;
transition: background-color 0.3s, transform 0.2s;
cursor: pointer;
&:hover {
background-color: $primary-dark;
transform: translateY(-2px);
}
&-large {
font-size: 1.1rem;
padding: 1rem 2rem;
}
}
// Connection methods
.connection-methods {
background-color: white;
border-radius: 8px;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05);
padding: 2rem;
margin-bottom: 2rem;
}
.method-card {
background-color: $gray-light;
border-radius: 8px;
padding: 1.5rem;
margin-bottom: 1rem;
transition: transform 0.3s;
&:hover {
transform: translateY(-5px);
}
.method-title {
font-size: 1.2rem;
color: $primary;
margin-bottom: 0.5rem;
display: flex;
align-items: center;
}
.method-icon {
margin-right: 0.5rem;
font-size: 1.4rem;
}
.method-details {
color: $gray;
}
}
.connect-link {
display: inline-block;
margin-top: 0.5rem;
color: $primary;
font-weight: 500;
text-decoration: none;
&:hover {
text-decoration: underline;
}
}
// Features section
.features {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
margin: 3rem 0;
}
.feature-card {
background-color: white;
border-radius: 8px;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05);
padding: 2rem;
text-align: center;
transition: transform 0.3s;
&:hover {
transform: translateY(-10px);
}
.feature-icon {
font-size: 2.5rem;
color: $primary;
margin-bottom: 1rem;
}
.feature-title {
font-size: 1.5rem;
margin-bottom: 1rem;
color: $dark;
}
.feature-text {
color: $gray;
}
}
// Section titles
.section-title {
text-align: center;
margin: 3rem 0 2rem;
color: $primary;
font-size: 2rem;
}
// FAQ section
.faq-item {
background-color: white;
border-radius: 8px;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05);
margin-bottom: 1rem;
overflow: hidden;
.faq-question {
background-color: $gray-light;
padding: 1rem;
font-weight: 500;
cursor: pointer;
display: flex;
justify-content: space-between;
align-items: center;
}
.faq-answer {
padding: 1rem;
color: $gray;
}
}
// Steps section
.steps {
counter-reset: step-counter;
margin: 2rem 0;
}
.step {
background-color: white;
border-radius: 8px;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05);
padding: 1.5rem;
margin-bottom: 1.5rem;
position: relative;
padding-left: 3.5rem;
&::before {
counter-increment: step-counter;
content: counter(step-counter);
position: absolute;
left: 1rem;
top: 1.5rem;
background-color: $primary;
color: white;
width: 2rem;
height: 2rem;
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
font-weight: bold;
}
&-title {
color: $primary;
margin-bottom: 0.5rem;
font-size: 1.2rem;
}
}
// Footer
footer {
background-color: $dark;
color: white;
padding: 3rem 0;
margin-top: 3rem;
.footer-content {
max-width: 1200px;
margin: 0 auto;
padding: 0 1rem;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 2rem;
}
.footer-section {
h3 {
color: $gray-light;
margin-bottom: 1rem;
}
}
.footer-links {
list-style: none;
li {
margin-bottom: 0.5rem;
}
a {
color: $gray;
text-decoration: none;
transition: color 0.3s;
&:hover {
color: white;
}
}
}
.copyright {
text-align: center;
padding: 1rem 0;
color: $gray;
border-top: 1px solid rgba(255, 255, 255, 0.1);
margin-top: 2rem;
}
}
// Responsive styles
@media (max-width: 768px) {
.navbar {
flex-direction: column;
padding: 0.5rem 1rem;
}
.nav-links {
flex-direction: column;
width: 100%;
}
.features {
grid-template-columns: 1fr;
}
}
// Additional utilities
.page-content {
min-height: 60vh;
}
.code-block {
background-color: #f1f1f1;
border-radius: 4px;
padding: 0.5rem;
font-family: monospace;
overflow-x: auto;
margin: 0.5rem 0;
}
.tip {
background-color: rgba($primary, 0.1);
border-left: 4px solid $primary;
padding: 1rem;
margin: 1rem 0;
}
.screenshot {
max-width: 100%;
height: auto;
border-radius: 8px;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
margin: 1rem 0;
}

99
src/views/channels.pug Normal file
View file

@ -0,0 +1,99 @@
extends layout
block content
.container.page-content
h2.section-title Popular Channels
p On the IRC*Sekor server, you'll find various topic channels. Below is a list of the most popular channels:
.method-card
.method-title #main
p The main community channel, a place for casual conversations and getting to know other users.
a.connect-link(href="ircs://irc.sekor.eu.org:6697/#main") Join #main
.method-card
.method-title #tech
p Discussions on technical topics, programming, computer hardware, and technology news.
a.connect-link(href="ircs://irc.sekor.eu.org:6697/#tech") Join #tech
.method-card
.method-title #help
p Help channel where you can ask questions about IRC, the server, or other topics.
a.connect-link(href="ircs://irc.sekor.eu.org:6697/#help") Join #help
.method-card
.method-title #gaming
p Everything about computer games, consoles, and e-sports.
a.connect-link(href="ircs://irc.sekor.eu.org:6697/#gaming") Join #gaming
h2.section-title Creating Your Own Channel
p You can also create your own channel on our IRC server. Here's how to do it:
.steps
.step
h3.step-title Connect to the Server
p First, connect to the IRC*Sekor server using your preferred method.
.step
h3.step-title Join a New Channel
p To create and join a new channel, use the command:
.code-block /join #YourChannelName
p Replace YourChannelName with the name you want for your channel. Channel names must start with # and should be descriptive but concise.
.step
h3.step-title Obtain Channel Operator Status
p As the first person to join the channel, you'll automatically become a channel operator (op), giving you administrative rights.
.step
h3.step-title Register Your Channel (Recommended)
p To maintain ownership of your channel, register it with ChanServ:
.code-block /msg ChanServ REGISTER #YourChannelName
p You need to have a registered nickname before registering a channel.
.step
h3.step-title Configure Your Channel
p Set up channel modes and access levels for different users:
.code-block /mode #YourChannelName +t
p This example sets the +t mode, which restricts topic changes to channel operators only.
h3 Common Channel Modes
.method-card
.method-title Basic Channel Modes
ul
li
strong +n
| - No external messages (users must join to send messages)
li
strong +t
| - Only ops can change the topic
li
strong +s
| - Secret channel (not visible in channel listings)
li
strong +i
| - Invite-only channel
li
strong +k [password]
| - Set a channel password
li
strong +l [number]
| - Limit the number of users
.method-card
.method-title User Privileges
ul
li
strong +o [nick]
| - Give operator status
li
strong +v [nick]
| - Give voice status (can speak in moderated channels)
li
strong +b [mask]
| - Ban a user (e.g., +b *!*@example.com)
.tip
strong Need Help?
| If you need assistance with channel management, join #help or message a server administrator.

75
src/views/index.pug Normal file
View file

@ -0,0 +1,75 @@
extends layout
block content
.hero
h1 Welcome to IRC*Sekor Community
p Discover the classic IRC chat experience with a modern twist. Connect with others, meet new people, and join discussions on various topics.
a.btn.btn-large(href="/web/") Open Web Client
.container
h2.section-title How to Connect?
.connection-methods
.method-card
.method-title
span.method-icon 🔒
| TLS Connection (Recommended)
.method-details
| Secure connection with TLS encryption on port 6697
a.connect-link(href="ircs://irc.sekor.eu.org:6697") ircs://irc.sekor.eu.org:6697
.method-card
.method-title
span.method-icon 🔌
| Standard Connection
.method-details
| Classic IRC connection without encryption on port 6667
a.connect-link(href="irc://irc.sekor.eu.org:6667") irc://irc.sekor.eu.org:6667
.method-card
.method-title
span.method-icon 🌐
| WebSockets (TLS)
.method-details
| Connection through WebSockets protocol with encryption
span.connect-link wss://irc.sekor.eu.org:8097
.method-card
.method-title
span.method-icon 💻
| Web Client
.method-details
| Use our built-in web client
a.connect-link(href="/web/") Open Web Client
h2.section-title Why IRC*Sekor?
.features
.feature-card
.feature-icon 🔒
h3.feature-title Security
p.feature-text Encrypted TLS and WebSockets connections to protect your privacy and communication security.
.feature-card
.feature-icon ⚡
h3.feature-title Speed
p.feature-text Lightweight IRC protocol ensures minimal latency and lightning-fast communication.
.feature-card
.feature-icon 👥
h3.feature-title Community
p.feature-text Diverse topic channels and friendly atmosphere for all users.
h2.section-title Frequently Asked Questions
.faq-item
.faq-question What is IRC?
.faq-answer
| IRC (Internet Relay Chat) is an internet communication protocol that enables real-time text conversations. It was created in 1988 and remains a popular method for online group communication.
.faq-item
.faq-question Do I need an account to use IRC*Sekor?
.faq-answer
| No, you can use IRC*Sekor without registration. However, registering an account allows you to keep your username (nick) and access additional features.
.faq-item
.faq-question What IRC clients can I use?
.faq-answer
| You can use any IRC client such as HexChat, mIRC, WeeChat, irssi, KiwiIRC, and many others. We also offer a built-in web client that requires no installation.

61
src/views/layout.pug Normal file
View file

@ -0,0 +1,61 @@
doctype html
html(lang="en")
head
meta(charset="UTF-8")
meta(name="viewport", content="width=device-width, initial-scale=1.0")
title #{title} | IRC*Sekor
link(rel="stylesheet", href="styles.css")
body
header
.logo IRC*Sekor
.tagline #{tagline}
nav
.navbar
a.nav-brand(href="index.html") IRC*Sekor
ul.nav-links
li
a(href="index.html") Home
li
a(href="register.html") Registration
li
a(href="login.html") Login
li
a(href="channels.html") Channels
li
a(href="faq.html") FAQ
block content
footer
.footer-content
.footer-section
h3 IRC*Sekor
p Your modern IRC community where classic chat meets contemporary technology.
.footer-section
h3 Quick Links
ul.footer-links
li
a(href="index.html") Home
li
a(href="register.html") Registration
li
a(href="login.html") Login
li
a(href="channels.html") Channels
li
a(href="faq.html") FAQ
.footer-section
h3 Connect
ul.footer-links
li
a(href="ircs://irc.sekor.eu.org:6697") TLS (6697)
li
a(href="irc://irc.sekor.eu.org:6667") Standard (6667)
li
a(href="/web/") Web Client
.copyright
| © 2025 IRC*Sekor. All rights reserved.

64
src/views/login.pug Normal file
View file

@ -0,0 +1,64 @@
extends layout
block content
.container.page-content
h2.section-title How to Log In to Your Account
p If you already have a registered account on IRC*Sekor, here's how you can log in each time you connect.
.steps
.step
h3.step-title Connect to the Server
p Connect to the IRC*Sekor server using your preferred method:
ul
li
| Using an IRC client:
span.code-block ircs://irc.sekor.eu.org:6697
li
| Or use the
a(href="/web/") web client
.step
h3.step-title Set Your Registered Username
p If you don't already have your username set, use the command:
.code-block /nick YourUsername
.step
h3.step-title Log In (Identify)
p Identify yourself to the NickServ service using the command:
.code-block /msg NickServ IDENTIFY YourPassword
p or alternatively:
.code-block /ns identify YourPassword
.step
h3.step-title Login Verification
p After logging in successfully, you'll receive confirmation from NickServ. Your nick will now be protected, and you'll have access to all your settings and channels.
h3 Automatic Login
p Most IRC clients allow you to configure automatic login after connecting:
.method-card
.method-title HexChat
ol
li Open the network list (Ctrl+S)
li Select IRC*Sekor network and click "Edit"
li Enter your username in the "Nick" field
li In the "Login method" section, select "NickServ" or "SASL"
li Enter your password
.method-card
.method-title mIRC
ol
li Open the connections window (Alt+E)
li Add or select IRC*Sekor
li In the "Connect" tab, enter your nick and username
li In the "Perform" section, add the line: /msg NickServ IDENTIFY YourPassword
.method-card
.method-title Web Client
p In our web client, you can save your login credentials in the settings. After opening the client, click the gear icon and configure automatic login.
.tip
strong Security:
| If you're using a shared computer, don't enable automatic login. Always log out of the client after ending your session.

47
src/views/register.pug Normal file
View file

@ -0,0 +1,47 @@
extends layout
block content
.container.page-content
h2.section-title How to Register an Account
p Registering an account on the IRC*Sekor server allows you to keep your username (nick) and access additional features. Below you'll find step-by-step instructions on how to do this.
.steps
.step
h3.step-title Connect to the Server
p First, connect to the IRC*Sekor server using your preferred connection method:
ul
li
| Using an IRC client:
span.code-block ircs://irc.sekor.eu.org:6697
li
| Or use the
a(href="/web/") web client
.step
h3.step-title Choose a Username (Nick)
p After connecting, set your username using the command:
.code-block /nick YourUsername
.step
h3.step-title Register Your Username
p Use the NickServ service to register your chosen nick:
.code-block /msg NickServ REGISTER YourPassword YourEmail@domain.com
.tip
strong Tip:
| Use a strong, unique password and provide a valid email address to recover your password if needed.
.step
h3.step-title Confirm Registration
p Check your email and find the verification instructions. You'll usually need to execute a command similar to:
.code-block /msg NickServ VERIFY REGISTER YourUsername VerificationCode
.step
h3.step-title Future Logins
p For future connections, you'll need to identify yourself:
.code-block /msg NickServ IDENTIFY YourPassword
p You can also set up your IRC client to automatically execute this command upon connecting.
.tip
strong Note:
| Remember that if you don't use the server for an extended period (usually 30-90 days), your registered name may be removed. Log in regularly to maintain your registration.