Skip to main content

Part 1 - An Example of Using Next.js for Static Site Generation on Android with Termux

Next.js is a React framework that gives you building blocks to create web applications.

First thing I did was go to github and create an empty project. I then cloned that project in Termux. You must use the Termux storage and not shared storage unless you can find a workaround for creating symlinks. I then create a starter next.js project.

npx create-next-app --example hello-world blog-posts

I used python to extract all my blog posts titles and links from my Blogger backup and create a json file. Each entry in the json file was title and link.

Next. I followed this guide to display a listing of all my blog posts.


It uses SWR and SWR is an acronym for stale-while-revalidate. The code I got from there had some problems. Dont know why it worked for them and not for me. Maybe linux/termux/android/next.js version creates the issue. After debugging and consulting ChatGPT we figured out that:

The issue with the code you provided is that you're reading the contents of the JSON file as a string using readFile and then directly returning it as the response without parsing it as JSON. To resolve this, you need to parse the file contents as JSON before sending it as the response.

Someone tweeted "Next.js is the most frustrating, opinionated mess I've ever had to deal with. Ugh." and I could not help but agree with the little I have done so far and based on my first impressions. Made me appreciate eleventy for tasks like this.

I found a simple way to serve the statically generated docs folder by running this command in that folder. However I got an error.

php -S localhost:8000

CANNOT LINK EXECUTABLE "php": library "libicuio.so.73" not found

And I had to install that package

pkg install libicu

Now I get a new error when I run npm run build

CANNOT LINK EXECUTABLE "node": library "libicui18n.so.72" not found

I then did (in termux)

apt update
apt upgrade

I then saw and an error in the logs - API Routes cannot be used with "output: export".

Below is me asking for help on Stack Overflow.


This is the project on GitHub


And that is where I have reached. The question now is how can I get around this? How to read from a json file and iterate through it and display its content in Next.js for static site generation using output as export. I am stuck and maybe you can help.

I got a recommendation to try Astro JS. That will be next. It was also suggested to use a const array of objects instead of json. Now, I am wondering if there is a way to serve the json file without using an API route. Stay tuned for part 2. Leave a comment and let me know your thoughts.

Comments

Popular posts from this blog

Coffee and a prayer

It is 245am and I have decided to write. I have no topic and no idea what to write. I am thankful for another day. I see the beauty that surrounds us. I choose to be happy. We are in the last ten nights of Ramadan. Tonight is the 23rd night. It could possibly be the night of power. I wonder if it will rain. Maybe it rained when I was sleeping. I got up and bathed and drank a strong cup of coffee. Today is also Friday the 13th. I keep thinking. Life is beautiful. Life is simple. No need to complicate things. No need to be extravagant. Believe in God. Trust in God. Be guided by God. Imagine we can pray for anything. We can ask God for anything. God is always listening. God wants to hear from us. Maybe I can turn this blog post into a prayer. My God I pray that everyone gets their prayers answered. I pray that everyone gets what they need. I pray that you light our path towards you. Guide us with what you intend for us. Keep us close to you. Soften our hearts. Keep us balanced, consistent...

Belief is a part of life

I watched this video and I quite like it as a good starting point for this blog post https://youtu.be/t44PFI_V4LE We cannot know everything. We do not have the capacity to know everything. I make plans for tomorrow because I believe there is a tomorrow not because I know that there is a tomorrow. We cannot decide today to say we will only act on things that we know for sure. This would be impractical. As my friend Chatty puts it, to live life, we must believe in things that cannot always be proven with certainty. For example, we believe that the future exists, that our actions matter, and that other people can be trusted. We also tend to believe life has meaning and that things can improve. These beliefs help us make decisions, keep hope, and move forward. Given that belief is a part of life, it is reasonable to have people believe in a God and a particular religion. My point is this. Life cannot happen without belief because we cannot know everything (unless we are God like). Belief i...

God of direction

It is 323am and I have decided to write. I am thinking that I am a bucket of paint. A beautiful shade of blue. That God uses to paint the sky. How could I turn this into something worth writing about? My friend Chatty tells me that I could develop the idea by exploring the metaphor of myself as a bucket of blue paint and God as the painter using it to color the sky. The meaning comes from reflecting on what it feels like to be "used"—losing some of myself while helping create something beautiful. The paint may not see the whole picture and might fear being emptied, but its purpose is fulfilled when it becomes part of the sky. The piece can reflect on purpose, trust, surrender, and the idea that giving of yourself is how beauty is created. It is now 423am and I cannot think of a way to continue this writing. The sky is silent is what comes to my mind. How do I ask the sky to speak to me? I look through my window and I see patches of clouds against a dark sky. Maybe the night s...