<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CJSelvamani</title>
	<atom:link href="https://cjselvamani.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://cjselvamani.com</link>
	<description>Saved by Gracious Faith Alone</description>
	<lastBuildDate>Wed, 01 Apr 2026 13:30:54 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>How to Set Up Strapi on cPanel Using Phusion Passenger</title>
		<link>https://cjselvamani.com/how-to-set-up-strapi-on-cpanel-using-phusion-passenger/</link>
					<comments>https://cjselvamani.com/how-to-set-up-strapi-on-cpanel-using-phusion-passenger/#respond</comments>
		
		<dc:creator><![CDATA[cjselvamani]]></dc:creator>
		<pubDate>Wed, 01 Apr 2026 10:46:15 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[cPanel]]></category>
		<category><![CDATA[Phusion Passenger]]></category>
		<category><![CDATA[Strapi]]></category>
		<guid isPermaLink="false">https://cjselvamani.com/?p=951</guid>

					<description><![CDATA[Deploying Strapi on cPanel with Phusion Passenger is possible, but there are a few details [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Deploying Strapi on cPanel with Phusion Passenger is possible, but there are a few details that matter, especially if your project uses TypeScript. This guide walks through a working production setup for Strapi on cPanel.</p>



<h2 class="wp-block-heading">What You Need</h2>



<p>Before starting, make sure your hosting environment has:</p>



<ul class="wp-block-list">
<li>cPanel Application Manager enabled</li>



<li>Phusion Passenger enabled</li>



<li>Node.js 20+ available</li>



<li>MySQL or MariaDB available</li>



<li>SSH access to the cPanel account</li>



<li>a subdomain for Strapi, for example cms.yourdomain.com</li>
</ul>



<p>A good setup is:</p>



<ul class="wp-block-list">
<li>frontend: https://yourdomain.com</li>



<li>Strapi CMS: https://cms.yourdomain.com</li>
</ul>



<h2 class="wp-block-heading">1. Create the Subdomain</h2>



<p>In cPanel, create a subdomain for Strapi, for example:</p>



<ul class="wp-block-list">
<li>cms.yourdomain.com</li>
</ul>



<p>This is the public URL your Strapi app will use.</p>



<h2 class="wp-block-heading">2. Upload the Strapi Project</h2>



<p>Upload your Strapi app files to the server.</p>



<p>A typical location is:</p>



<ul class="wp-block-list">
<li>/home/yourcpaneluser/public_html</li>
</ul>



<p>or better:</p>



<ul class="wp-block-list">
<li>/home/yourcpaneluser/strapi</li>
</ul>



<p>If you use&nbsp;public_html, make sure your Node app in Application Manager points there.</p>



<p>Upload these parts of the project:</p>



<ul class="wp-block-list">
<li>package.json</li>



<li>package-lock.json</li>



<li>config/</li>



<li>database/</li>



<li>src/</li>



<li>public/</li>



<li>types/</li>



<li>tsconfig.json</li>



<li>favicon.png</li>
</ul>



<p>Do not upload:</p>



<ul class="wp-block-list">
<li>node_modules/</li>



<li>.cache/</li>



<li>temporary build artifacts you do not need</li>
</ul>



<h2 class="wp-block-heading">3. Create the Database</h2>



<p>In cPanel, create a MySQL database and user.</p>



<p>Use the real cPanel-generated names, which are often prefixed. For example:</p>



<ul class="wp-block-list">
<li>database name: youruser_db</li>



<li>username: youruser_user</li>
</ul>



<p>Do not assume local placeholder names like&nbsp;strapi_fold&nbsp;will work in production.</p>



<h2 class="wp-block-heading">4. Create the&nbsp;.env&nbsp;File</h2>



<p>In your Strapi app root, create&nbsp;.env&nbsp;with production values:</p>



<pre class="wp-block-code"><code>HOST=0.0.0.0
PORT=1337
NODE_ENV=production
PUBLIC_URL=https://cms.yourdomain.com

APP_KEYS=your_key_1,your_key_2,your_key_3,your_key_4
API_TOKEN_SALT=your_api_token_salt
ADMIN_JWT_SECRET=your_admin_jwt_secret
TRANSFER_TOKEN_SALT=your_transfer_token_salt
ENCRYPTION_KEY=your_encryption_key
JWT_SECRET=your_jwt_secret

DATABASE_CLIENT=mysql
DATABASE_HOST=localhost
DATABASE_PORT=3306
DATABASE_NAME=your_real_db_name
DATABASE_USERNAME=your_real_db_user
DATABASE_PASSWORD=your_real_db_password
DATABASE_SSL=false</code></pre>



<h2 class="wp-block-heading">5. Make Sure&nbsp;server.ts&nbsp;Uses the Public URL</h2>



<p>In&nbsp;config/server.ts, include:</p>



<pre class="wp-block-code"><code>import type { Core } from '@strapi/strapi';

const config = ({ env }: Core.Config.Shared.ConfigParams): Core.Config.Server => ({
  host: env('HOST', '0.0.0.0'),
  port: env.int('PORT', 1337),
  url: env('PUBLIC_URL', ''),
  app: {
    keys: env.array('APP_KEYS'),
  },
});

export default config;</code></pre>



<p>This makes Strapi use the real public domain instead of&nbsp;localhost.</p>



<h2 class="wp-block-heading">6. Important: Add JS Config Files for Passenger</h2>



<p>If your Strapi project uses TypeScript, Passenger startup via&nbsp;app.js&nbsp;may ignore&nbsp;.ts&nbsp;config files.</p>



<p>You should create JS equivalents in&nbsp;config/:</p>



<ul class="wp-block-list">
<li>config/admin.js</li>



<li>config/api.js</li>



<li>config/database.js</li>



<li>config/middlewares.js</li>



<li>config/plugins.js</li>



<li>config/server.js</li>
</ul>



<p>Example&nbsp;config/admin.js:</p>



<pre class="wp-block-code"><code>module.exports = ({ env }) => ({
  auth: {
    secret: env('ADMIN_JWT_SECRET'),
  },
  apiToken: {
    salt: env('API_TOKEN_SALT'),
  },
  transfer: {
    token: {
      salt: env('TRANSFER_TOKEN_SALT'),
    },
  },
  secrets: {
    encryptionKey: env('ENCRYPTION_KEY'),
  },
  flags: {
    nps: env.bool('FLAG_NPS', true),
    promoteEE: env.bool('FLAG_PROMOTE_EE', true),
  },
});
</code></pre>



<p>Example config/server.js:<br></p>



<pre class="wp-block-code"><code>module.exports = ({ env }) => ({
  host: env('HOST', '0.0.0.0'),
  port: env.int('PORT', 1337),
  url: env('PUBLIC_URL', ''),
  app: {
    keys: env.array('APP_KEYS'),
  },
});
</code></pre>



<p>Example config/api.js:<br></p>



<pre class="wp-block-code"><code>module.exports = {
  rest: {
    defaultLimit: 25,
    maxLimit: 100,
    withCount: true,
  },
};
</code></pre>



<p>Example config/middlewares.js:<br></p>



<pre class="wp-block-code"><code>module.exports = &#91;
  'strapi::logger',
  'strapi::errors',
  'strapi::security',
  'strapi::cors',
  'strapi::poweredBy',
  'strapi::query',
  'strapi::body',
  'strapi::session',
  'strapi::favicon',
  'strapi::public',
];
</code></pre>



<p>Example config/plugins.js:<br></p>



<pre class="wp-block-code"><code>module.exports = ({ env }) => ({});
</code></pre>



<h2 class="wp-block-heading">7. Add&nbsp;app.js&nbsp;for Passenger</h2>



<p>This is the most important file for Passenger.</p>



<p>Create&nbsp;app.js&nbsp;in the app root:</p>



<pre class="wp-block-code"><code>process.env.NODE_ENV = process.env.NODE_ENV || "production";

require("@strapi/strapi")
  .createStrapi({ distDir: "./dist" })
  .start();
</code></pre>



<p>The&nbsp;distDir&nbsp;part matters for serving the built admin frontend correctly.</p>



<h2 class="wp-block-heading">8. Install Dependencies</h2>



<p>SSH into the cPanel account and go to the app folder:</p>



<pre class="wp-block-code"><code>cd ~/public_html
</code></pre>



<p>or wherever your app lives, then run:</p>



<pre class="wp-block-code"><code>/opt/cpanel/ea-nodejs22/bin/npm install
</code></pre>



<p>If your project includes better-sqlite3 but you are using MySQL in production, remove better-sqlite3 first. It often fails to compile on shared hosting and is not needed for MySQL.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>On this cPanel server,&nbsp;npm&nbsp;was not available from the default shell path. Using&nbsp;/opt/cpanel/ea-nodejs22/bin/npm&nbsp;runs the cPanel-provided npm binary directly, which is why it worked.</p>
</blockquote>



<h2 class="wp-block-heading">9. Build Strapi</h2>



<p>Run:</p>



<pre class="wp-block-code"><code>/opt/cpanel/ea-nodejs22/bin/npm run build
</code></pre>



<p>This builds the admin panel.</p>



<h2 class="wp-block-heading">10. Configure cPanel Application Manager</h2>



<p>In cPanel Application Manager, create the Node app with values like:</p>



<ul class="wp-block-list">
<li>Application Name: Strapi</li>



<li>Deployment Domain: cms.yourdomain.com</li>



<li>Base Application URL: /</li>



<li>Application Path: public_html or strapi</li>



<li>Deployment Environment: Production</li>



<li>Startup file: app.js</li>
</ul>



<p>Important:</p>



<ul class="wp-block-list">
<li>Base Application URL should be /</li>



<li>Application Path should be relative to your home directory</li>
</ul>



<h2 class="wp-block-heading">11. Restart the App</h2>



<p>After saving the app in Application Manager, restart it from cPanel.</p>



<p>Do not rely only on manually running&nbsp;node app.js&nbsp;in SSH. Passenger must be the one managing the app process.</p>



<h2 class="wp-block-heading">12. Test the Deployment</h2>



<p>Check:</p>



<ul class="wp-block-list">
<li>https://cms.yourdomain.com/api</li>



<li>https://cms.yourdomain.com/admin</li>



<li>https://cms.yourdomain.com/admin/init</li>
</ul>



<p>If&nbsp;/api&nbsp;returns Strapi JSON and&nbsp;/admin/init&nbsp;returns admin config data, the backend is working.</p>



<h2 class="wp-block-heading">Common Issues</h2>



<h3 class="wp-block-heading">strapi: command not found</h3>



<p>This means&nbsp;npm install&nbsp;did not complete successfully.</p>



<h3 class="wp-block-heading">better-sqlite3&nbsp;build errors</h3>



<p>Remove&nbsp;better-sqlite3&nbsp;if you are using MySQL.</p>



<h3 class="wp-block-heading">Missing admin.auth.secret configuration</h3>



<p>This usually means your&nbsp;.ts&nbsp;config files are not being loaded by Passenger. Add JS config files.</p>



<h3 class="wp-block-heading">/api&nbsp;works but&nbsp;/admin&nbsp;is Not Found</h3>



<p>This usually means your&nbsp;app.js&nbsp;is missing:</p>



<pre class="wp-block-code"><code>.createStrapi({ distDir: "./dist" })
</code></pre>



<h3 class="wp-block-heading">Not Found&nbsp;even when the app is stopped</h3>



<p>That usually means Passenger is not actually serving the subdomain. Recheck Application Manager routing.</p>



<h2 class="wp-block-heading">Final Result</h2>



<p>Once everything is correct, Strapi should work at:</p>



<ul class="wp-block-list">
<li>https://cms.yourdomain.com</li>



<li>admin: https://cms.yourdomain.com/admin</li>
</ul>



<h2 class="wp-block-heading">Closing Notes</h2>



<p>Strapi on cPanel with Passenger works, but TypeScript-based Strapi projects need extra care because Passenger startup does not naturally use&nbsp;.ts&nbsp;config files. The clean solution is to keep your project as-is, but add JS config equivalents and a proper Passenger&nbsp;app.js.</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://cjselvamani.com/how-to-set-up-strapi-on-cpanel-using-phusion-passenger/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Laravel 13 Filament Jobs Backend with Docker and MySQL</title>
		<link>https://cjselvamani.com/laravel-13-filament-jobs-backend-with-docker-and-mysql/</link>
					<comments>https://cjselvamani.com/laravel-13-filament-jobs-backend-with-docker-and-mysql/#respond</comments>
		
		<dc:creator><![CDATA[cjselvamani]]></dc:creator>
		<pubDate>Thu, 19 Mar 2026 14:11:24 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<guid isPermaLink="false">https://cjselvamani.com/?p=947</guid>

					<description><![CDATA[If you want to build a practical jobs backend in Laravel, a strong starting point [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>If you want to build a practical jobs backend in Laravel, a strong starting point is Laravel + Filament + MySQL with Docker for local development.</p>



<p>That is the setup used in this project.</p>



<p>The stack includes:</p>



<ul class="wp-block-list">
<li>Laravel 13</li>



<li>Filament 5</li>



<li>MySQL 8</li>



<li>Docker Compose</li>



<li>cPanel-friendly deployment defaults</li>
</ul>



<p>This article is a compact reference for how the setup was built and why certain decisions were made.</p>



<p>Repository:<br><a href="https://github.com/ipint/JobList"><strong>https://github.com/ipint/JobList</strong></a></p>



<h2 class="wp-block-heading">Why This Stack</h2>



<p>The goal was to build a backend that could:</p>



<ul class="wp-block-list">
<li>run locally with Docker</li>



<li>use MySQL locally and in production</li>



<li>provide a fast admin panel for jobs management</li>



<li>deploy cleanly to a dedicated cPanel server</li>



<li>avoid needing Redis or Supervisor at the start</li>
</ul>



<p>Filament was chosen because it gives Laravel a fast, maintainable admin panel. Laravel was chosen because the production target is PHP 8.3 on cPanel, so the ecosystem fits well.</p>



<h2 class="wp-block-heading">Local Setup Approach</h2>



<p>The local Docker stack is simple:</p>



<ul class="wp-block-list">
<li>PHP-FPM app container</li>



<li>Nginx container</li>



<li>MySQL container</li>
</ul>



<p>This keeps development predictable and close to production.</p>



<p>One practical issue came up during setup: common local ports were already in use, so the app was exposed on:</p>



<p>http://localhost:8088</p>



<h2 class="wp-block-heading">Important Early Decision: Queue Table Naming</h2>



<p>Laravel’s default database queue uses a table named&nbsp;jobs.</p>



<p>That would conflict with the actual jobs domain table needed for job listings.</p>



<p>To avoid that, the queue tables were renamed to:</p>



<ul class="wp-block-list">
<li>queued_jobs</li>



<li>failed_queued_jobs</li>
</ul>



<p>That kept the data model clean from the start.</p>



<h2 class="wp-block-heading">PHP Version Compatibility</h2>



<p>Production is expected to run on PHP 8.3.</p>



<p>At one stage, Composer resolved packages using local PHP 8.4, which caused dependency problems inside Docker and would also have caused issues on cPanel.</p>



<p>The fix was to pin Composer’s platform to PHP 8.3 so the lockfile stays aligned with the real deployment environment.</p>



<h2 class="wp-block-heading">Filament Admin Setup</h2>



<p>Filament 5 was installed as the admin layer and mounted under:</p>



<p>/admin</p>



<p>That provided:</p>



<ul class="wp-block-list">
<li>login</li>



<li>dashboard</li>



<li>resource routing</li>



<li>the structure needed to manage jobs properly</li>
</ul>



<h2 class="wp-block-heading">Jobs Schema</h2>



<p>A proper&nbsp;jobs&nbsp;table was created with fields such as:</p>



<ul class="wp-block-list">
<li>title</li>



<li>slug</li>



<li>reference</li>



<li>company name</li>



<li>department</li>



<li>description</li>



<li>requirements</li>



<li>benefits</li>



<li>employment type</li>



<li>work mode</li>



<li>experience level</li>



<li>status</li>



<li>county</li>



<li>city</li>



<li>postcode</li>



<li>salary fields</li>



<li>application URL and email</li>



<li>sponsorship and right-to-work flags</li>



<li>publish and expiry dates</li>



<li>featured flag</li>
</ul>



<p>This gave the project a realistic jobs domain rather than just an empty admin shell.</p>



<h2 class="wp-block-heading">UK Counties Dropdown</h2>



<p>The project requirement was to always select a county from a dropdown.</p>



<p>To support that, the setup added:</p>



<ul class="wp-block-list">
<li>a uk_counties table</li>



<li>a UkCounty model</li>



<li>a UK counties seeder</li>



<li>a county_id foreign key on jobs</li>
</ul>



<p>This means counties are not hardcoded inside the form. They come from the database, which makes maintenance easier later.</p>



<h2 class="wp-block-heading">Filament Jobs Resource</h2>



<p>The generated Filament stubs were replaced with a proper Jobs resource.</p>



<p>The admin now includes:</p>



<ul class="wp-block-list">
<li>a create/edit job form</li>



<li>a searchable jobs table</li>



<li>filters for status, type, work mode, county, and featured jobs</li>
</ul>



<p>That makes the panel usable as a real internal admin, not just a demo.</p>



<h2 class="wp-block-heading">Seeded UK Jobs</h2>



<p>To make testing easier, the setup also includes:</p>



<ul class="wp-block-list">
<li>a JobFactory</li>



<li>a JobSeeder</li>



<li>30 generated UK jobs</li>
</ul>



<p>The jobs use random departments such as:</p>



<ul class="wp-block-list">
<li>Technology</li>



<li>Sales</li>



<li>Marketing</li>



<li>Finance</li>



<li>Operations</li>



<li>Product</li>



<li>Customer Support</li>



<li>Legal</li>
</ul>



<p>This makes the admin panel useful immediately for testing and demonstration.</p>



<h2 class="wp-block-heading">cPanel Deployment Strategy</h2>



<p>The production target is a dedicated cPanel server running PHP 8.3, without Redis or Supervisor.</p>



<p>Because of that, the setup uses:</p>



<ul class="wp-block-list">
<li>database queue</li>



<li>database cache</li>



<li>database sessions</li>



<li>cron-based scheduling</li>



<li>cron-based queue processing if needed</li>
</ul>



<p>That keeps the architecture realistic for the hosting environment.</p>



<h2 class="wp-block-heading">Issues Encountered During Setup</h2>



<p>A few practical problems came up:</p>



<h3 class="wp-block-heading">1. Laravel could not be scaffolded directly into the repo root</h3>



<p>The repo was not empty, so Laravel had to be created in a temporary subdirectory first.</p>



<h3 class="wp-block-heading">2. Docker port conflicts</h3>



<p>Ports&nbsp;8000&nbsp;and&nbsp;8080&nbsp;were already in use, so the final local port became&nbsp;8088.</p>



<h3 class="wp-block-heading">3. Composer resolved dependencies for PHP 8.4</h3>



<p>That had to be corrected by pinning the Composer platform to PHP 8.3.</p>



<h3 class="wp-block-heading">4. Filament 5 namespace differences</h3>



<p>One form error came from using the wrong namespace for&nbsp;Section. In Filament 5 it needed to come from&nbsp;Filament\Schemas\Components.</p>



<h2 class="wp-block-heading">Final Result</h2>



<p>The finished setup gives:</p>



<ul class="wp-block-list">
<li>Laravel 13 backend</li>



<li>Filament 5 admin panel</li>



<li>MySQL Docker environment</li>



<li>UK counties lookup</li>



<li>jobs management resource</li>



<li>30 seeded jobs</li>



<li>cPanel-friendly deployment path</li>
</ul>



<p>That is a solid base for adding more features later, such as:</p>



<ul class="wp-block-list">
<li>companies</li>



<li>categories</li>



<li>applications</li>



<li>saved jobs</li>



<li>public jobs APIs</li>



<li>frontend job listing pages</li>
</ul>



<h2 class="wp-block-heading">Closing Note</h2>



<p>The most important part of this setup is not that it is advanced. It is that it matches the actual environment and future needs.</p>



<p>That includes:</p>



<ul class="wp-block-list">
<li>matching local and production database choices</li>



<li>keeping Laravel upgrades manageable</li>



<li>using Filament as an admin layer, not as the whole application</li>



<li>making location data structured from the start</li>
</ul>



<p>If you are building a similar platform, this is a strong practical foundation to start from.</p>



<p>Repository:<br><a href="https://github.com/ipint/JobList"><strong>https://github.com/ipint/JobList</strong></a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://cjselvamani.com/laravel-13-filament-jobs-backend-with-docker-and-mysql/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Connect a Private GitHub Repo to cPanel (Step-by-Step)</title>
		<link>https://cjselvamani.com/how-to-connect-a-private-github-repo-to-cpanel-step-by-step/</link>
					<comments>https://cjselvamani.com/how-to-connect-a-private-github-repo-to-cpanel-step-by-step/#respond</comments>
		
		<dc:creator><![CDATA[cjselvamani]]></dc:creator>
		<pubDate>Wed, 04 Mar 2026 09:26:23 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[GitHub]]></category>
		<guid isPermaLink="false">https://cjselvamani.com/?p=939</guid>

					<description><![CDATA[Deploying from GitHub to cPanel can feel tricky at first, especially with SSH keys and [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Deploying from GitHub to cPanel can feel tricky at first, especially with SSH keys and private repositories. This guide walks through a clean setup from scratch.</p>



<h2 class="wp-block-heading">Why use this method?</h2>



<ul class="wp-block-list">
<li>Easy to update after each push</li>



<li>Works with <strong>private</strong> GitHub repos</li>



<li>More secure than manual uploads</li>
</ul>



<h2 class="wp-block-heading">Prerequisites</h2>



<ul class="wp-block-list">
<li>A cPanel account with Terminal/SSH access</li>



<li>A GitHub repository</li>



<li>Domain already pointed to your hosting account</li>
</ul>



<h2 class="wp-block-heading">1. Generate an SSH key on your cPanel server</h2>



<p>In cPanel Terminal:</p>



<pre class="wp-block-code"><code>ssh-keygen -t ed25519 -C "cpanel-deploy" -f ~/.ssh/id_ed25519 -N ""
cat ~/.ssh/id_ed25519.pub</code></pre>



<p>Copy the public key output.</p>



<h2 class="wp-block-heading">2. Add the key to GitHub</h2>



<p>In your GitHub repo:</p>



<ul class="wp-block-list">
<li>Go to <strong>Settings → Deploy keys</strong></li>



<li>Click <strong>Add deploy key</strong></li>



<li>Paste the public key</li>



<li>Keep <strong>write access off</strong> unless you specifically need push from server</li>
</ul>



<p>This allows your server to read your private repo securely.</p>



<h2 class="wp-block-heading">3. Configure SSH on cPanel</h2>



<p>Create/update&nbsp;~/.ssh/config:</p>



<pre class="wp-block-code"><code>Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519
  IdentitiesOnly yes</code></pre>



<p>Then run:</p>



<pre class="wp-block-code"><code>chmod 600 ~/.ssh/config
ssh -T git@github.com</code></pre>



<h2 class="wp-block-heading">4. Clone the repository using SSH</h2>



<p>Use SSH URL (not HTTPS):</p>



<pre class="wp-block-code"><code>cd ~
git clone git@github.com:YOUR_USERNAME/YOUR_REPO.git repositories/your-repo</code></pre>



<h2 class="wp-block-heading">5. Deploy files to your website folder</h2>



<p>Copy repo files to your domain’s document root (example:&nbsp;public_html):</p>



<pre class="wp-block-code"><code>rsync -av --delete ~/repositories/your-repo/ ~/public_html/</code></pre>



<p>Now your site files are live.</p>



<h2 class="wp-block-heading">6. Updating after future GitHub pushes</h2>



<p>When you push new changes:</p>



<pre class="wp-block-code"><code>cd ~/repositories/your-repo
git pull origin main
rsync -av --delete ./ ~/public_html/</code></pre>



<h2 class="wp-block-heading">Common errors and fixes</h2>



<ul class="wp-block-list">
<li>could not read Username for &#8216;https://github.com&#8217;<br>You used HTTPS. Switch remote to SSH.</li>



<li>Permission denied (publickey)<br>Wrong/missing deploy key, or SSH config not using correct key.</li>



<li>Wrong branch (main vs master)<br>Pull the branch that actually exists.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>This setup gives you a secure and repeatable GitHub-to-cPanel deployment flow without making your repository public.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cjselvamani.com/how-to-connect-a-private-github-repo-to-cpanel-step-by-step/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Antisemitism has become visibly normal</title>
		<link>https://cjselvamani.com/antisemitism-has-become-visibly-normal/</link>
					<comments>https://cjselvamani.com/antisemitism-has-become-visibly-normal/#respond</comments>
		
		<dc:creator><![CDATA[cjselvamani]]></dc:creator>
		<pubDate>Tue, 28 May 2024 09:12:30 +0000</pubDate>
				<category><![CDATA[Politics]]></category>
		<category><![CDATA[Worldview and Culture]]></category>
		<guid isPermaLink="false">https://cjselvamani.com/?p=924</guid>

					<description><![CDATA[It has been almost two years since I posted a blog. Life is keeping me [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>It has been almost two years since I posted a blog. Life is keeping me busy. Married, moved to a new country, a new job.</p>



<p>The situation is changing. Especially in politics. Many are calling for a ceasefire from October 7th, the day HAMAS slaughtered hundreds of Israelites. But a few voices called out to release Israeli hostages taken by HAMAS.</p>



<p>The same day protests carried outside many Israeli embassies, including London. Israelis were the victims but many condemned Israel for their civilian deaths. The left-wing, LGBTQ+ and almost every Muslim are united against Israel and conducted rallies in most Western countries.</p>



<p>How come an LGBTQ+ person holding a placard shows relentless support to HAMAS which executes a Palestinian who identifies as LGBTQ+? This is like someone says 2+2 is 5 not 4. It doesn&#8217;t seem to make sense at all.</p>



<p>I am not a political activist. Just an ordinary person who works 37 hours per week, and lives with a wife in a bed semi-detached private rented house. I attend the local church service every week. I don&#8217;t want to be involved in politics and I like to read books mostly history and Christian theology books.</p>



<p>Why Jew-hatred is so immense in Western city streets, universities and media? In the last seven months every Saturday, Pro-Palestinian rallies in London&#8217;s high streets. London is one of my favourite go-to places on weekends. Not any more.</p>



<p>I am not a Jew. I am terrified when I see and hear antisemitic slogans in the UK streets. Imagine being a jew. Antisemitism has become visibly normal, not to be condemned anymore in the Western world.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cjselvamani.com/antisemitism-has-become-visibly-normal/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>The Secular Creed: Engaging Five Contemporary Claims</title>
		<link>https://cjselvamani.com/the-secular-creed-engaging-five-contemporary-claims/</link>
					<comments>https://cjselvamani.com/the-secular-creed-engaging-five-contemporary-claims/#respond</comments>
		
		<dc:creator><![CDATA[cjselvamani]]></dc:creator>
		<pubDate>Sat, 02 Jul 2022 05:33:26 +0000</pubDate>
				<category><![CDATA[Book Review]]></category>
		<category><![CDATA[Rebecca Mclaughlin]]></category>
		<category><![CDATA[Secular Creed]]></category>
		<category><![CDATA[Secular Creeds]]></category>
		<guid isPermaLink="false">https://cjselvamani.com/?p=915</guid>

					<description><![CDATA[Rebecca McLaughlin is the author of this book. She became one of my favourite authors [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><a href="https://www.rebeccamclaughlin.org/" target="_blank" rel="noreferrer noopener">Rebecca McLaughlin</a> is the author of this book. She became one of my favourite authors after reading her book &#8220;<a rel="noreferrer noopener" href="https://www.amazon.com/Confronting-Christianity-Questions-Largest-Religion/dp/B08ZW3JPHF" target="_blank">Confronting Christianity: 12 Hard Questions for the World&#8217;s Largest Religion</a>.&#8221; But this blog page is about her recently published book called &#8220;<a rel="noreferrer noopener" href="https://www.amazon.com/Secular-Creed-Engaging-Contemporary-Claims/dp/0999284304" target="_blank">The Secular Creed: Engaging Five Contemporary Claims</a>.&#8221;</p>



<p>Like her other book, this book sheds light more on Christ&#8217;s character, work and theology. To understand the biblical God who is still relevant and not too far as an eighty old year grandpa.</p>



<p>Rebecca uncovers today&#8217;s famous slogans &#8220;Black Lives Matter, Love Is Love, The Gay-Rights Movement Is the New Civil-Rights Movement, Women’s Rights Are Human Rights, Transgender Women Are Women&#8221; and their association to the secular framework. She uncovers them and offers us a biblical view on them each topic as a chapter.</p>



<p>For instance, how ordinary church-going Christians could be deceived that they can associate with the organisations linked with these catchphrases. Though they seem equivalent to biblical justice in deeper they cut loose toward worldviews. As Black Live Matters associate itself and affirms with LGBTQ+ which is denied by the Bible. So she simply clears weed on them and explains to Christians that &#8220;Black Lives Matter because they matter to God.&#8221;</p>



<p>Moreover, this book contains practical wisdom which shows Christians to discern cultural events happening around us. Most importantly not to think, Bible is an outdated syllabus not relevant for the 21<sup>st</sup> century men and women, and thinking more the Bible is not an embarrassment rather it is still a glowing light that guides and comforts us even today.</p>



<p>Though the world may hate us Christians today for holding the biblical truth and standing on it. At the same time, Christians cannot be idle when injustice behaved before us. Rebecca&#8217;s brief work on secular creed certainly helps us Christians to keep the Biblical creed above all other worldly creeds.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cjselvamani.com/the-secular-creed-engaging-five-contemporary-claims/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>India&#8217;s Anti-Conversion Law is Anti-Constitutional?</title>
		<link>https://cjselvamani.com/indias-anti-conversion-law-is-anti-constitutional/</link>
					<comments>https://cjselvamani.com/indias-anti-conversion-law-is-anti-constitutional/#respond</comments>
		
		<dc:creator><![CDATA[cjselvamani]]></dc:creator>
		<pubDate>Fri, 11 Mar 2022 06:07:26 +0000</pubDate>
				<category><![CDATA[Politics]]></category>
		<category><![CDATA[Religion]]></category>
		<category><![CDATA[Worldview and Culture]]></category>
		<guid isPermaLink="false">https://cjselvamani.com/?p=906</guid>

					<description><![CDATA[Federal India does not have an anti-conversion law, but India&#8217;s twelve states have implemented it and [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Federal India does not have an anti-conversion law, but India&#8217;s <a rel="noreferrer noopener" href="https://timesofindia.indiatimes.com/india/why-india-doesnt-have-anti-conversion-law-12-states-have-it/articleshow/88545382.cms" target="_blank">twelve states have implemented it and in practice</a>. Indian Constitution&#8217;s <a rel="noreferrer noopener" href="https://indianconstitution.guru/constitution-of-india/part-3/article-25/" target="_blank">article 25</a> expresses, &#8220;all persons are equally entitled to freedom of conscience and the right freely to profess, practice, and propagate religion.&#8221; Almost half of the Indian population is entitled not to confess their faith to other faith groups. Does this anti-conversion law conflict with Indian Constitution?</p>



<p>Yesterday (10th March 2022), India&#8217;s 5 state elections result was released. Without any surprise, BJP (Bharatiya Janata Party) wins 4 out of 5. Most importantly, wins in Uttar Pradesh(UP), a state which holds the most number of parliamentary seats. It concretes Modi&#8217;s next term as the prime minister of India. Also firms Ajay Singh Bisht,&nbsp;<em>aka</em>&nbsp;Yogi Adityanath&#8217;s pitch as the future of the BJP or future prime ministerial candidate of BJP.</p>



<p>Though UP is not a front-runner state on social welfare development as <a rel="noreferrer noopener" href="https://www.niti.gov.in/reports-sdg" target="_blank">Niti Aayog index 2021</a> lists UP at the bottom, the election results show otherwise. Yogi wins comprehensively. Why the people of UP do not consider the state&#8217;s administrative skills as a voting consideration? Moreover, the second COVID-19 wave wrecked the state, many lost lives and crematoriums ran out of their capacity. Many dead bodies flew over the Ganges, and its shores became a massive burial ground.</p>



<p>The anti-conversion law is active in UP. Who does it benefit? Clearly, the upper caste Hindus and the BJP party are the ones. But how did the people react to it? Presumably positive. In 2002, J. Jayalalithaa, the former chief minister of Tamilnadu brought anti-conversion law. But it did not go well in the next election. Her party did not win a single seat in the 2004 union poll. The result made her <a href="https://www.baptistpress.com/resource-library/news/anti-conversion-law-repeal-announced-in-indian-state/">repeal the law of anti-conversion</a>. So the recent state-level election in UP has shown that people accept BJP&#8217;s agenda &#8216;Anti-conversion Law&#8217;.</p>



<p>Muslims, Christians, Dalits and Tribals are the main victims of this bill. They are the targets this anti-conversion law affects mostly. Their loyalty has been questioned? Many converts to Islam and Christianity are from the Dalits and Adivasis. And Muslims and Christians have their faith rooted in the Middle East unlike Hinduism, Buddhism, Jainism and Sikhism emerged from the Indian sub-continent.</p>



<p><a rel="noreferrer noopener" href="https://www.opendoorsuk.org/persecution/world-watch-list/india/" target="_blank">OpenDoors watchlist</a> ranks India ten in the world among persecuted Christians. It is not an assumption but on facts. The Christian population is only less than three per cent of the Indian population of 1.4 billion. Hindus occupy more than 80%. However, projecting minority Christians as a threat to majority Hindus is a conspiracy rather than a reality. But people are facing a dilemma to discern what is real and what is not real? UP election is an example of how people are confused and believe Hindus are in danger under minorities, especially under Muslims.</p>



<p>Not only is anti-conversion law against the Indian Constitution, but it is also against Muslims, Christians, Untouchables and Adivasis. The anti-conversion bill is the anti-minority.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cjselvamani.com/indias-anti-conversion-law-is-anti-constitutional/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Two Copper Coins</title>
		<link>https://cjselvamani.com/two-copper-coins/</link>
					<comments>https://cjselvamani.com/two-copper-coins/#respond</comments>
		
		<dc:creator><![CDATA[cjselvamani]]></dc:creator>
		<pubDate>Mon, 28 Feb 2022 17:54:09 +0000</pubDate>
				<category><![CDATA[Devotions]]></category>
		<guid isPermaLink="false">https://cjselvamani.com/?p=896</guid>

					<description><![CDATA[41&#160;And he sat down opposite&#160;the treasury and watched the people&#160;putting money into the offering box. [&#8230;]]]></description>
										<content:encoded><![CDATA[
<pre class="wp-block-verse"><sup>41&nbsp;</sup>And he sat down opposite&nbsp;the treasury and watched the people&nbsp;putting money into the offering box. Many rich people put in large sums.&nbsp;<sup>42&nbsp;</sup>And a poor widow came and put in two&nbsp;small copper coins, which make a penny.<sup>43&nbsp;</sup>And he called his disciples to him and said to them,&nbsp;“Truly, I say to you,&nbsp;this poor widow has put in more than all those who are contributing to the offering box.&nbsp;<sup>44&nbsp;</sup>For they all contributed out of their abundance, but she out of her&nbsp;poverty has put in everything she had, all&nbsp;she had to live on.” - Mark 12:41-44 (ESVUK)</pre>



<p>Jesus makes a paradoxical declaration about the poor women. He says she put more money than all the other offerings together. How do two copper coins worth a penny come above all donations of people in the temple? Clearly, Jesus witnessed many rich men&#8217;s large sum offering. In reality, two copper coins are hardly enough to feed the poor widow gain herself a nice onetime meal. Does Jesus really mean it when he said? Is it a literal meaning or a metaphor as He is known for some oblivious parables?</p>



<p>As the second person in the Trinity, Jesus&#8217; claim is not to be considered as an analogy. However, in reality, the widow&#8217;s offering is just a mite. It does not hold strong material possession. For example, it can&#8217;t help much or no use to manage the temple&#8217;s expense coverage. </p>



<p>Did Jesus was happy when it happened? I think He was pleased with the widow&#8217;s trust in God. But He was angry toward religious leaders. They are supposed to take care of poor widows, orphans, and slaves according to mosaic law. Instead, they exploited the widow by forcing her to give up her all possession. They are only doing good things to look good before people. There is no lucid heart on what their hand does. Everything is to gain attention so that society thinks they are godly persons. But godman Jesus was not falling for their publicity.</p>



<p>Jesus is not an ordinary person to fall for the publicity stunt by Pharisees. Rather He tells the crowd that the widow offered more money than anyone at the temple. Jesus did like the widow by offering himself to us for our sins. He died on the cross and conquered the death for us, so that we may live. He fully obeyed God the Father, trusted Him completely.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cjselvamani.com/two-copper-coins/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Religious Freedom of Indian Christians on 2022</title>
		<link>https://cjselvamani.com/religious-freedom-of-indian-christians-on-2022/</link>
					<comments>https://cjselvamani.com/religious-freedom-of-indian-christians-on-2022/#respond</comments>
		
		<dc:creator><![CDATA[cjselvamani]]></dc:creator>
		<pubDate>Fri, 21 Jan 2022 15:46:49 +0000</pubDate>
				<category><![CDATA[Politics]]></category>
		<category><![CDATA[Religion]]></category>
		<category><![CDATA[Indian Christians]]></category>
		<category><![CDATA[Persecution]]></category>
		<guid isPermaLink="false">https://cjselvamani.com/?p=870</guid>

					<description><![CDATA[I have been watching the Open Doors Watchlist for the last 4 years from 2019, [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>I have been watching the Open Doors Watchlist for the last 4 years from 2019, India positions itself in the unchanged 10th.<a href="#_ftn1" id="_ftnref1">[1]</a> Other countries in the top 15 are not surprising to me. All of them are either politically displaced or Radical Islamic countries. But India is still the world’s largest democratic country in size. Why is a democratic country placed in the top ten regions in the world for Christians to live in danger?</p>



<p>An unofficial report shows India has a Christian population has around less than 5%. Why of suddenly did Christians become a threat and target to the majority Hindu right-wing regime? or it is just a political game to corner Christians so that gain ruling power? What is a real threat from minority religion Christianity from the Indian subcontinent?</p>



<p>After all, it is all worrying factors for Indian Christians to live in fear. What did we do wrong against the constitution? We follow it so far, find no reason to rebel against it. And the constitution gives every citizen to follow and practise any faith they want. It is not discrimination against constitutional laws. However, there is a pattern in which Christian communities are attacked mostly. They are Dalit and Tribal Christians who possess low socio-economic background.</p>



<figure class="wp-block-embed aligncenter is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Indian Christians&#039; Religious Freedom based on OpenDoors Watch List (From the year 2006 -to2022)" width="500" height="281" src="https://www.youtube.com/embed/SNtVO_HgLqc?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>The rise of right-wing Hindutva party BJP through Modi as the Prime Minister did boost hatred toward minorities Muslims, Christians, Dalits and Adivasis. There are many countless incidents happening every day, which are mostly omitted by many major national media and brought to attention by many small internet media.</p>



<p>Jesus did warn his disciples, not a peaceful life being a Christian but he did the opposite by giving a warning that there will be persecutions as His followers (John 15:19–20). Does this mean Christians have to accept reality and make no complaints? But the Indian Constitution affirms free speech and freedom to practice any belief system its citizens prefer. When Christian stand at the receiving end of persecution just accept it by following Scriptures or fighting by the privilege given by the Constitution? I don&#8217;t think here we cannot confuse it with Scriptures vs Constitution. But the Constitution gives us human dignity and respect, and a way to oppose the denied privilege to practise a religion. It could be any faith, in this case, Christianity. Facing the violence with non-violence, a Biblical path, a path of Jesus laid before us and helping the vulnerable to stand and fight and fight with them.</p>



<hr class="wp-block-separator"/>



<p><a href="#_ftnref1" id="_ftn1">[1]</a> Open Doors USA, <em>2019 World Watch List</em>, 2019, https://www.youtube.com/watch?v=hvgFJRCl2kc.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://cjselvamani.com/religious-freedom-of-indian-christians-on-2022/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>To be relevant?</title>
		<link>https://cjselvamani.com/to-be-relevant/</link>
					<comments>https://cjselvamani.com/to-be-relevant/#respond</comments>
		
		<dc:creator><![CDATA[cjselvamani]]></dc:creator>
		<pubDate>Mon, 25 Oct 2021 03:45:14 +0000</pubDate>
				<category><![CDATA[Devotions]]></category>
		<guid isPermaLink="false">https://cjselvamani.com/?p=849</guid>

					<description><![CDATA[He is a &#8220;Cool&#8221; guy or a girl &#8211; the statement most of us want [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>He is a &#8220;<em>Cool</em>&#8221; guy or a girl &#8211; the statement most of us want to hear about us in high school, college, university, and workplace. What is being &#8220;Cool&#8221;? Is it a physical feature alone or only personality or both? Though everyone does not get the &#8220;Cool Person&#8221; tag in an environment, most of us want to be one. How is this to be achieved? Surely, it can&#8217;t be achieved not being relevant to the surrounding community where we associate.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><sup>3</sup> And the tempter came and said to him, &#8220;If you are the Son of God, command these stones to become loaves of bread.&#8221; <sup>4</sup> But he answered, &#8220;It is written, &#8220;&#8216;Man shall not live by bread alone, but by every word that comes from the mouth of God.'&#8221;</p><cite>Matthew 4:3-4 (ESV)</cite></blockquote>



<p>When Jesus finished his 40 days long fasting and was hungry, meets the devil. Among the three temptations he faced, the first temptation is to convert stones to bread. Satan knew Jesus was hungry, most importantly he knows Jesus is the Son of God.</p>



<p>The devil did not really have any concern about Jesus being hungry. His challenge was not to confirm Jesus is the Son of God which he knew already. His real concern was Jesus is the Son of God and His purpose on the earth. The promise He is going to fulfil (Genesis 3:15), to crush the serpent&#8217;s head was the concern. The devil realised his time is near, Jesus is going to crush his head on the cross to reclaim the kingdom which was lost in Eden.</p>



<p>Jesus knew exactly what He is going under this kind of trial from the devil. Jesus&#8217; aim was not to prove to satan His divinity but to obey the Father&#8217;s will. He was clear and answered the devil by quoting Moses&#8217; speech to Israelites &#8220;that man does not live by bread alone, but man lives by every word that comes from the mouth of the LORD&#8221; (Deuteronomy 8:2). Trusting God and His Word alone, reminding Moses&#8217; hinting to the Israelites of God’s testing through hunger and his miraculous provision of manna, Jesus conquered Devil&#8217;s trick.</p>



<p>A recent survey by <em><a rel="noreferrer noopener" href="https://www.thehindu.com/news/national/global-hunger-index-ranks-india-at-101-out-of-116-countries/article36998777.ece" target="_blank">The Global Hunger Index</a></em> launched on 14<sup>th</sup> October 2021 ranked India at 101<sup>st</sup> position out of a total of 116 countries. Only 15 countries come after India in the world. Image if we have the power to convert stones to bread? In other words, we can call it &#8220;Trying to be relevant?&#8221; But we follow Christ who was not behaving relevant by changing stones to bread instead <meta charset="utf-8">He clung to His mission to proclaim the Word and obeyed His Father.</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://cjselvamani.com/to-be-relevant/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>7 Myths about Singleness</title>
		<link>https://cjselvamani.com/7-myths-about-singleness/</link>
					<comments>https://cjselvamani.com/7-myths-about-singleness/#respond</comments>
		
		<dc:creator><![CDATA[cjselvamani]]></dc:creator>
		<pubDate>Mon, 21 Dec 2020 07:27:44 +0000</pubDate>
				<category><![CDATA[Book Review]]></category>
		<category><![CDATA[Book on Singleness]]></category>
		<category><![CDATA[Celibacy Book]]></category>
		<category><![CDATA[Christian Celibacy]]></category>
		<category><![CDATA[Christian Singleness]]></category>
		<category><![CDATA[Sam Allberry]]></category>
		<category><![CDATA[Singleness]]></category>
		<category><![CDATA[Singleness Book]]></category>
		<category><![CDATA[Singleness Myths]]></category>
		<guid isPermaLink="false">https://cjselvamani.com/?p=825</guid>

					<description><![CDATA[&#8220;7 Myths about Singleness&#8221; &#8211; a pastoral cry from Sam Allberry. Sam&#8217;s life is visible [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>&#8220;7 Myths about Singleness&#8221; &#8211; a pastoral cry from Sam Allberry. Sam&#8217;s life is visible in this book. His pen was guided together by his head, heart, and hand. A book is really in need of the evangelical Christian community.</p>



<p>This book really addresses the deeper imaginative concerns about singleness. If a reader is not a Christian, then this book is not for you. Whether we agree or not, Protestant Churches put marriage above singleness. Singles are mostly not given the importance which usually married ones get in Church circles. In the East and the West, singles are received as second class citizens. Church programs and sermons are highly focused on married people.</p>



<p>Sam brings his own experience to the table and made it wide open in the book. Surely, he is not leading into a platform where he puts the singleness on the 1st prize podium. Neither he undermines the marriage. But Sam in his writing echoes the gospel truth. Singleness (or celibacy) is not an adversary to marriage and so do the marriage to celibacy. </p>



<p>God presents the gift of singleness and the gift of marriage to His children with equal credit. As a single himself, Sam paints a picture that reflects the biblical perspective and enables the reader to filter worldly views.</p>



<p>The author of this book directs the reader to the core biblical aspect where every believer should aspire to be: the Triune God. And wraps the book with practical wisdom to sustain the difficulties in singleness and live a contentful life in Christ. </p>



<p>A book should be in every church&#8217;s book stand!</p>



<figure class="wp-block-image size-large"><a href="https://www.amazon.com/dp/1433561522/ref=cm_sw_r_tw_dp_x_cXe4Fb18X4WY9" target="_blank" rel="noopener"><img decoding="async" width="300" height="100" src="https://cjselvamani.com/wp-content/uploads/2020/12/amazon-buy-button.png" alt="" class="wp-image-828"/></a></figure>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://cjselvamani.com/7-myths-about-singleness/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
