minimal portfolio made with next.js and tailwindcss, has dynamic mdx content such as blogs & rss feed support
AGPL-3.0 License
You can check the live demo of this website
# fork the repo & clone it
git clone https://github.com/your-username/rdsx.dev
# install dependencies
bun install
# run the development server
bun dev
# run velite dev server
bun velite dev
Configure velite.config.ts
to add or modify your collection of content
Write your blog posts, projects, tils in the content
directory.
root
+├── content
+│ ├── blogs
+│ │ └── hello-world.mdx
+│ ├── projects
+│ │ └── project.mdx
+│ ├── tils
+│ │ └── til.mdx
+│ └── others
+│ └── other.yml
├── public
├── package.json
└── velite.config.ts
Read the velite docs for more information on how to use it.
src/config/site.config.ts
src/config/portfolio.config.ts
src/config/experience.config.ts
src/config/site.config.ts
src/config/site.config.ts
& src/config/portfolio.config.ts
src/app/blogs/[slug]/page.tsx
src/app
src/app/sitemap.ts
.src/app/robots.ts
.Configure rss feed generation script in rss.ts
. You can update description
and other parameters.
To generate rss feed, run the following command:
bun run rss:build
It will generate rss.xml
, rss.json
& atom.xml
in your public
directory.
Your default rss feed will be available at /rss.xml
or /rss.json
or /atom.xml
.
To configure custom rss feed path, update next.config.mjs
file. Currently, it's set to /feed
.
const nextConfig = {
// ...
async rewrites() {
return [
{
source: '/feed',
destination: '/rss.xml',
},
]
},
// ...
};
I'm currently using Vercel Analytics and Vercel Speed Analytics for this website. It's very simple to integrate. You will find the integration code in src/app/layout.tsx
.
// ...
import { SpeedInsights } from "@vercel/speed-insights/next"
import { Analytics } from "@vercel/analytics/react"
// ...
export default function RootLayout(...) {
return (
<div>
{/* ... */}
<Analytics />
<SpeedInsights />
{/* ... */}
</div>
);
}
The easiest way to deploy this website is to use Vercel. You can deploy it with a single click using the button below: